不超过一个连续字符出现的正则表达式

我正在寻找仅在字符串中连续出现2个连续字符时才匹配的正则表达式。

例如:

  • 1123456-匹配
  • 1122345-不符
  • 1121125-不匹配
  • 1234567-不符
  • 1112345-不匹配

当前具有此正则表达式:([0-9])\ 1 {1,},但它也匹配1122345,这不是我所需要的

评论
  • Buck
    Buck 回复

    这awk做到了:

    awk -F "" '
    {
        d=0
        for(i=1;i<NF;i++){
            if ($i==$(i+1)) d++
        }
        if (d==1) print
    }' file
    

    Setting the field to empty string ("") you can read each line character-wise! If character i equals character i+1, then increment d. If d==1, the string is printed.

    从您的样本中:

    $ cat file
    1123456
    1122345
    1121125
    1234567
    1112345
    

    它输出:

    1123456