标签: regular-expression

grep:尾随反斜杠

我想为\resources\. 我该怎么做呢?

我试过了:

grep \resources\
grep \\resources\\
grep "\resources\"
grep "\\resources\\"
Run Code Online (Sandbox Code Playgroud)

这些都不起作用

grep regular-expression

30
推荐指数
3
解决办法
7万
查看次数

在正则表达式中,哪些字符需要转义?

一般来说,正则表达式中的哪些字符需要转义?

例如,以下在语法上不正确:

echo '[]' | grep '[]'
grep: Unmatched [ or [^
Run Code Online (Sandbox Code Playgroud)

然而,这语法上正确的:

echo '[]' | grep '\[]'
[]
Run Code Online (Sandbox Code Playgroud)

是否有任何文档说明哪些字符应该在正则表达式中转义,哪些不应该?

shell regular-expression

29
推荐指数
3
解决办法
5万
查看次数

验证 Linux 用户的正则表达式是什么?

添加新用户时,如何验证字符串?

我想有一个正则表达式。那个正则表达式是什么?

linux users regular-expression

28
推荐指数
3
解决办法
3万
查看次数

如何在sed的正则表达式中使用[\w]+?

我在 Windows 上,但我想我的问题仍然正确地放在这里。

C:\Users\User>grep --version
GNU grep 2.6.3

C:\Users\User>sed --version
GNU sed version 4.2.1
Run Code Online (Sandbox Code Playgroud)

我注意到以下工作(输出here):

echo here | grep -E "\w+"
echo here | grep -E "[her]+"
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用(不输出任何内容):

echo here | grep -E "[\w]+"
Run Code Online (Sandbox Code Playgroud)

这再次执行(输出here):

echo here | grep -P "[\w]+"
Run Code Online (Sandbox Code Playgroud)

[\w]我认为这是 Perl 正则表达式特有的东西。那是对的吗?

所以,让我们谈谈sed。这有效(输出gone):

echo here | sed -r "s/\w+/gone/"
echo here | sed -r "s/[her]+/gone/"
Run Code Online (Sandbox Code Playgroud)

同样,这不会(输出here):

echo here | sed -r "s/[\w]+/gone/"
Run Code Online (Sandbox Code Playgroud)

现在,我如何为 sed 激活 Perl 正则表达式——有什么办法吗?

grep sed regular-expression

28
推荐指数
2
解决办法
3万
查看次数

LC_COLLATE 是否(应该)影响字符范围?

Collat​​ion order throughLC_COLLATE不仅定义了单个字符的排序顺序,还定义了字符范围的含义。或者是吗?考虑以下片段:

unset LANGUAGE LC_ALL
echo B | LC_COLLATE=en_US grep '[a-z]'
Run Code Online (Sandbox Code Playgroud)

直观地说,B不是 in [a-z],所以这不应该输出任何东西。这就是 Ubuntu 8.04 或 10.04 上发生的事情。但是在一些运行 Debian lenny 或挤压的机器上,B可以找到,因为范围a-z包括排序顺序之间az排序顺序中的所有内容,包括大写字母BZ.

所有测试的系统都en_US生成了语言环境。我还尝试改变语言环境:在B上面匹配的机器上,{en_{AU,CA,GB,IE,US},fr_FR,it_IT,es_ES,de_DE}{iso8859-1,iso8859-15,utf-8}除了日语(任何可用的编码)和C/之外的每个可用语言环境(主要基于拉丁语:,还有中文语言环境)都会发生同样的情况POSIX

当您超越 ASCII 时,字符范围在正则表达式中意味着什么?为什么一方面某些 Debian 安装与其他 Debian 安装和 Ubuntu 之间存在差异?其他系统的行为如何?谁是对的,谁应该报告错误?

(请注意,我特别询问字符范围的行为,例如[a-z]en_US语言环境中,主要是在基于 GNU libc 的系统上。我不是在询问如何匹配小写字母或 ASCII 小写字母。)


在两台 Debian 机器上,一台B[a-z],一台不在,输出LC_COLLATE=en_US …

regular-expression locale

27
推荐指数
1
解决办法
1万
查看次数

vim 搜索包含特定位数的数字

我需要在一个大文档中找到特定的长度数字。我尝试为此使用正则表达式。例如,如果我需要搜索正好为 2 位的数字,我会使用\d\d(即 /d 两次后跟一个空格)。这很好用。

但是要找到 10 位数字,输入\d10 次实际上并不可行。

试过\d{2},说' E486:找不到模式:\d{2} '

有没有更快/更容易的方法来实现这一目标?

vim search regular-expression

27
推荐指数
2
解决办法
5万
查看次数

有没有办法在文本文件/脚本中只显示未注释的行?

很多时候,当手动搜索文件时,有太多的评论让您眼花缭乱,您开始希望有一种方法可以让您只显示那些没有评论的行。

有没有办法用 cat 或其他工具跳过评论?我猜有一种方法,它涉及一个正则表达式。我希望它只是显示而不是实际删除任何行等。

注释采用# 形式,我使用 zsh 作为我的 xterm。

grep zsh text-processing regular-expression cat

26
推荐指数
3
解决办法
5万
查看次数

grep:正则表达式仅用于匹配括号之间的任何内容

如何仅在括号之间匹配单词

输入 : this is (test.com)

愿望输出: test.com

grep regular-expression

25
推荐指数
2
解决办法
6万
查看次数

从输出中删除颜色代码

可能的重复:
从脚本输出中删除控制字符(包括控制台代码/颜色)

我正在编写一个脚本来与我正在编写的程序一起工作。我正在尝试做的是使用另一个脚本评估多个客户端的完成程度。我的脚本几乎完全符合我的要求,但是有一些颜色常量插入到我的 XML 输出中,当我稍后将 XML 解析为 PHP 时,这些常量会搞砸。长话短说,我有一个我正在使用的 sed 表达式,它删除了颜色常量的第一部分,但它无法删除看起来像 ^[(B - 因此我的问题。

这是我正在使用的 sed 序列:

sed -r 's/\x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g'
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个单独的 sed 序列我可以在之后运行以删除尾随序列。我试过使用

sed 's/\^\[\\(B//'
Run Code Online (Sandbox Code Playgroud)

但它似乎没有删除任何东西。我不一定需要答案,如果有人对 sed 和颜色代码有很好的指导,那也会非常有帮助。我用谷歌搜索了一下,但我找到的答案似乎只是去掉了颜色的开头部分。

谢谢你的帮助。

sed regular-expression

23
推荐指数
1
解决办法
1万
查看次数

使用正则表达式量词查找命令,例如 {1,2}

我一直在尝试创建一个 find 命令字符串,它将查找以数字 1-99 结尾的所有文件,但排除所有其他文件。

例如,我想找到myfile1 myfile99但不是myfile456而不是myfilebackup

我正在考虑的正则表达式是,myfile[1-9]{1,2}但我无法将其与 find 一起使用。

find . -regex '.*myfile[0-9]{1,2}' 或者 find . -iname 'myfile[0-9]{1,2}'

从我所见,它{1,2}是不起作用的部分。

(顺便说一句,你可以-name -regex互换使用吗?)

任何帮助表示赞赏。

bash find regular-expression

23
推荐指数
2
解决办法
5万
查看次数

标签 统计

regular-expression ×10

grep ×4

sed ×2

bash ×1

cat ×1

find ×1

linux ×1

locale ×1

search ×1

shell ×1

text-processing ×1

users ×1

vim ×1

zsh ×1