Questions tagged «regular-expression»

正则表达式是匹配字符串中字符模式的一种方式。


2
为什么默认情况下不使用扩展正则表达式模式进行sed?
我正在使用sed。据我所知,我使用的正则表达式是正确的,但是sed并没有做任何事情。原来,我使用的是\s+哪个sed无法理解,并且当我切换到[ ]+它时起作用。 综上所述,我做了一个正则表达式,要使其正常工作,我必须转义几乎所有内容并删除\s空白。似乎有一种避免所有这些情况的模式,-r所以我想问一下: 为什么不-r设置sed的默认模式?为什么我不得不费很大的劲才能逃脱一切? man表示存在该选项--posix,并且“应该支持POSIX.2 BRE”是什么意思?NFA / DFA模式?

3
在Bash中查找双字符的正则表达式
我正在寻找一个正则表达式,该表达式在命令行(Bash)上查找文本,列表等中所有出现的双字符。 主要问题:有没有一种简单的方法来寻找像序列aa,ll,ttttt,等其中一个定义的正则表达式查找具有相同性质的n个出现次数?我正在寻找的是在非常基本的水平上实现这一目标。在命令行上。在Linux Shell中。 经过大量研究之后,我得出了以下答案-以及由此产生的问题,因此它们只是给我一个提示,指出可能的解决方案。但: a)(e)grep和反斜杠问题 grep 'a\{2\}' 寻找 aa egrep'a{2}' 寻找 aa 问题:设置反冲的必要性是否确实与我使用的命令绑定?如果是这样,有人可以给我提示在这里使用(e)grep时还要考虑什么吗? b)我的问题在这里找到了这个答案,尽管它并不是我要找的东西: grep -E '(.)\1' filename查找具有相同字符的条目出现多次,但不问出现的频率。这接近我要寻找的内容,但我仍然想设置一些重复项。 我可能应该将其分为两个或两个以上的问题,但是我不想在这里充斥这个很棒的网站。 PS:还有一个问题,可能是题外话,但:是in,inside,at或on the shell。并且是on the command line正确的呢?

2
正则表达式的定义是什么?
我最近与Ghoti进行了友好的辩论,认为在回答这个问题的评论中,正则表达式是什么构成的。我声称以下是一个正则表达式: `[Rr]eading[Tt]est[Dd]ata` Ghoti不同意,声称它是文件文件。维基百科上的全局页面声称(强调我的): Globs不包含Kleene星的语法,该语法允许多次重复表达式的前一部分;因此,它们不被视为正则表达式,可以在任何给定的有限字母上描述更大的一组正则语言。 但是,此声明没有引用,表明这只是特定维基百科编辑的意见。 该单一UNIX®规范,版本2,指出一个基本的正则表达式(BRE),甚至可以是单个字符: 普通字符是与之匹配的BRE:受支持的字符集中的任何字符,但BRE特殊字符中列出的BRE特殊字符除外。 那么,* nix世界中正则表达式的定义是什么,该定义是否排除文件glob?



1
为什么某些正则表达式命令具有各种字符的相反的'\'解释?
以以下命令为例: find . -regex ".*\.\(cpp\|h\)" 这将在目录中找到所有的.h和.cpp文件。句号“。” 在正则表达式中通常表示“任何字符”。要使其仅与实际期间匹配,必须使用反斜杠字符“ \”对其进行转义。 在这种情况下,给定具有特殊含义的字符,您必须对其进行转义以获取其代表的实际字符。 现在,带括号和“或”栏,分别为字符“(”,“)”和“ |”。这些也具有特殊含义,用于对正则表达式进行分组。但是,要获得特殊含义,必须使用反斜杠对字符进行转义!没有反斜杠,字符具有它所代表的实际字符的含义。 为什么是“。” 与'(',')'和'|'不同吗?

5
删除bash中的前导字符串
我有一个类似的字符串rev00000010,我只想要最后一个数字,在这种情况下为10。 我已经试过了: TEST='rev00000010' echo "$TEST" | sed '/^[[:alpha:]][0]*/d' echo "$TEST" | sed '/^rev[0]*/d' 两者均不返回任何内容,尽管regex似乎是正确的(尝试使用regexr)


1
用双反斜杠转义单个点-AWK
“有效的awk编程”书中有一个关于现场拆分的示例。这是示例: 如果要用直截号后接任何单个字符的字段分隔,请使用‘FS = "\\.."’。 为什么是双反斜杠?不是\..吗?



2
为什么“ [az] *”与非字母字符串匹配?
我有alphanum两行内容: 123 abc this is a line 我对为什么在运行时sed 's/[a-z]*/SUB/' alphanum得到以下输出感到困惑: SUB123 abc SUB is a line 我期待: 123 SUB SUB is a line 我找到了一个修复程序(sed 's/[a-z][a-z]*/SUB/'改用),但是我不明白为什么它起作用,而我的却不起作用。 你能帮我吗?

3
为什么或为什么使用`。*?`比`。*`更好?
我在SuperUser上回答了这个问题,该问题与在提取输出时使用的某种正则表达式有关。 我给出的答案是这样的: tail -f log | grep "some_string.*some_string" 然后,在对我的答案的三条评论中,@ Bob写道: .*贪婪,可能会捕获比您想要的更多的东西。.*?通常更好。 然后这个 在?上一个修改*,使其成为懒惰,而不是贪婪的默认。假设PCRE。 我用google搜索PCRE,但无法在我的答案中得到什么意义? 最后, 我还应该指出,这是regex(默认情况下,grep执行POSIX regex),而不是shell glob。 我只知道什么是正则表达式以及它在grep命令中的基本用法。因此,我无法获得这3条评论中的任何一条,并且我想到了以下这些问题: .*?vs. 用法有什么区别.*? 哪个更好,在什么情况下?请提供示例。 另外,如果有人可以理解这些意见,将会很有帮助。 更新:作为对问题的回答,正则表达式与Shell Globs有何不同? @Kusalananda在他的评论中提供了此链接。 注意:如果需要,请在回答引用上下文之前阅读我对这个问题的回答。

2
Grep从固定文本开始,直到第一个空白行
我有一个prova.txt像这样的文件: Start to grab from here: 1 fix1 fix2 fix3 fix4 random1 random2 random3 random4 extra1 extra2 bla Start to grab from here: 2 fix1 fix2 fix3 fix4 random1546 random2561 extra2 bla bla Start to grab from here: 1 fix1 fix2 fix3 fix4 random1 random22131 我需要从“开始抢在这里”到第一个空白行。输出应如下所示: Start to grab from …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.