Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 利用具有多个条件的grep正则表达式_Regex_Unix - Fatal编程技术网

Regex 利用具有多个条件的grep正则表达式

Regex 利用具有多个条件的grep正则表达式,regex,unix,Regex,Unix,因此,我试图想出一个代码来检查 如果字符串在句首有重复字符,以及 aa….,bb 如果字符串以重复字符结尾 …aa…bb 我正在尝试组合这两个条件,并查看文本文件中的任何字符串是否与条件匹配 到目前为止,我已经学会了如何使用egrep 有了它,我可以完成算法的第一部分 egrep '^(.)\1{1}' *.txt 但是当我试着把它和第二部分结合起来 egrep '^(.)\1{1}|(.)\1{1}$' *.txt 第二部分被忽略,结果与之前相同 如何将多个模式组合到正则表达式中?在备选方

因此,我试图想出一个代码来检查

  • 如果字符串在句首有重复字符,以及
  • aa….,bb

  • 如果字符串以重复字符结尾
  • …aa…bb

    我正在尝试组合这两个条件,并查看文本文件中的任何字符串是否与条件匹配

    到目前为止,我已经学会了如何使用egrep

    有了它,我可以完成算法的第一部分

    egrep '^(.)\1{1}' *.txt
    
    但是当我试着把它和第二部分结合起来

    egrep '^(.)\1{1}|(.)\1{1}$' *.txt
    
    第二部分被忽略,结果与之前相同


    如何将多个模式组合到正则表达式中?

    在备选方案中,您必须参考第二部分中的组2,因为您有两个捕获组

    注意,您可以省略
    {1}
    量词

    ^(.)\1|(.)\2$
    

    您的代码可能如下所示:

    egrep '^(.)\1|(.)\2$' *.txt
    
    要在开头和结尾同时匹配重复字符,可以使用:

    ^(.)\1.*(.)\2$
    

    是否有办法只输出同时满足条件1和条件2的字符串?egrep'^(.)\1 |(.)\2$'*.txt将输出满足条件1或2的结果。@VAnon在这种情况下,您可以使用
    ^(.)\1.*\2$