正则表达式的长度大于5

时间:2018-07-03 14:20:18

标签: regex shell

echo "bar,320,1530596475337.d94e12fe7ad127ec28e694123a9708d3.," \
    | grep "[a-zA-Z0-9,\.]{5,}"

这与我提供的字符串不匹配。我在正则表达式中匹配给定字符串的地方出了什么问题?

2 个答案:

答案 0 :(得分:1)

Grep默认为Basic Regular Expression (BRE)方言,这要求转义量词的花括号:\{5,\}

更多备注:

  • 您不必在方括号表达式中转义字符,因此只需使用[.],而无需使用[\.]在其中包含句点。
  • Extended Regular Expressions (ERE)不需要转义花括号,您可以使用{5,}。表示您正在使用带有grep -E选项的ERE。
  • 取决于您的语言环境,a-z可能不只是小写的拉丁字母。可以使用POSIX字符类a-zA-Z0-9代替[:alnum:]
  • 您正在使用双引号。即使在这种情况下也没有什么区别,您通常还是希望您的正则表达式用单引号引起,以免由于字符扩展而引起意外。

总而言之,我将使用以下命令:

grep -E '[[:alnum:],.]{5,}'

答案 1 :(得分:0)

有许多不同的正则表达式方言。默认情况下,grep使用的方言在您使用大括号时不支持。

使用选项-P(可切换为Perl方言)重试。