我需要找到至少两次具有相同字母对的所有单词(单词是空格之间的所有非空格字符,即chochol,9933499)。我想出了这个正则表达式然而它不起作用,我无法弄清楚如何正确地写它。
[ ]\S*(\S\S)\S*\1\S*[ ]
答案 0 :(得分:0)
模式中的[ ]
是多余的,甚至是有害的,因为它们会阻止匹配重叠(后续,1个空格后)子串。
您需要使用
grep -oP '\S*(\S\S)\S*\1\S*'
请参阅online demo
如果你只需要匹配"单词"使用两个重复相同的连续字母,将(\S\S)
替换为([A-Za-z]{2})
甚至\p{L}{2}
。