什么测量这个正则表达式(。* \ 1)

时间:2016-05-04 04:06:35

标签: regex shell

我用google搜索正则表达式,检查字符串超过两次, 然后我找到了这个例子:

egrep“(\ w {2})。* \ 1”文件

但我可以理解“(\ w {2})。* \ 1”这个。

有人可以详细解释我或者给我一些参考网页吗?

1 个答案:

答案 0 :(得分:1)

  1. (\w{2})匹配任何包含所有这些字词的字符:A-Z, a-z,0-9和下划线,数量为2({2}量词),它 也将它们分组为一个被捕获的组,即记住匹配的字符和那些字符 可以使用带编号的反向引用再次引用字符 这种情况\1
  2. .*匹配0或更多任何字符
  3. \1再次与第一组匹配
  4. 因此,正则表达式会尝试匹配同一行中0个或更多字符后重复的任何2个字符。

    $ egrep "(\w{2}).*\1"
    ab;;ab
    ab;;ab
    abcdab
    abcdab
    12ab12
    12ab12
    12abcd123
    12abcd123
    abab
    abab
    $
    

    输入和匹配的输出:

    1. ab;;ab已捕获的群组\ 1:ab且匹配的字符串为ab;;ab
    2. abcdab已捕获的群组\ 1:ab且匹配的字符串为abcdab
    3. 12ab12已捕获的群组\ 1:ab且匹配的字符串为12ab12
    4. 12abcd123已捕获的群组\ 1:12且匹配的字符串为 12abcd12
    5. abab已捕获的群组\ 1:ab且匹配的字符串为abab
    6. 正如所指出的,可以找到有关元/特殊字符的更多信息here