3

正则表达式“[a-z0-9]\+”是什么意思?或者具体来说,这里的“\”是什么意思?世界上没有匹配该正则表达式的字符串是否正确?

4

5 回答 5

5

这很难说。这取决于您使用哪个 RE(BRE?ERE?或 PCRE)。

如果您使用BRE,则\赋予+特殊含义。

如果您使用ERE/PCRE\则带走特殊含义+

一个例子会很清楚(使用 grep,默认使用 BRE):

kent$  echo "aaaaaa+"|grep -o 'a+'
a+

kent$  echo "aaaaaa+"|grep -o 'a\+'
aaaaaa

kent$  echo "aaaaaa+"|grep -oE 'a\+'
a+

kent$  echo "aaaaaa+"|grep -oE 'a+' 
aaaaaa
于 2013-07-06T15:36:05.027 回答
2

\in[a-z0-9]\+表示文字加号。它是必需的,因为没有斜线, the+将是一个或多个 quantifier

相比:

  • [a-z0-9]\+匹配后跟加号的拉丁小写字母或数字,例如y+
  • [a-z0-9]+匹配一个或多个拉丁小写字母或数字,例如xy4
于 2013-07-06T15:33:45.237 回答
0

它使“+”成为文字 + 符号。这将与匹配第一个范围的任何字符匹配,后跟一个 + 号,例如c+or 5+

如果没有斜线,+ 将表示“一次或多次出现”,因此字符串如abc, t63

于 2013-07-06T15:32:50.040 回答
0

这里的斜杠(“\”)用于转义+. +在正则表达式中有一个特殊的含义:它意味着重复前面的项目一次或多次。

  • [a-z0-9]\+表示:匹配一个字母数字字符和一个加号(“+”)
  • [a-z0-9]+表示:匹配一个或多个字母数字字符

您可以在此处找到有关正则表达式量词的更多信息。
您可能还想看看这个正则表达式基本语法参考

于 2013-07-06T15:33:41.367 回答
0

反斜杠 ( \) 转义特殊字符以抑制其特殊含义。所以这里+去掉了 的特殊含义。它被认为只是一个象征。的通常含义+是重复前面的块 1 次或更多次。

所以在这种情况下[a-z0-9]\+意味着一个小写字母或一个十进制数字后跟一个+。a+, b+,0+1+都是这个正则表达式的有效表达式。

于 2013-07-06T15:34:25.747 回答