我正在寻找字符串中的单词字符对,这些单词字符可能不一定在字符串中彼此相邻。例如,由于“a”字符对,“ahna32g”应匹配。我目前拥有的是"\w*(\w)\1+\w*"
,如果匹配的字符是连续的,则成功。我对正则表达式很陌生,所以如果能给出详细的解释,我真的很感激。
答案 0 :(得分:1)
您需要在\w*
和(\w)
之间插入\1
,让正则表达式引擎匹配重复字符之间的任何0 +字符:
\w*(\w)\w*\1+\w*
^^^
请参阅regex demo。
因此,正则表达式将匹配
\w*
- 0+ word chars (\w)
- 将字char捕获到第1组\w*
- 将匹配0+字词\1+
- 在第1组内发生一次或多次值\w*
- 0+ word chars。答案 1 :(得分:0)
我的方法捕获了第1组和第2组中(最早的)重复的字符。它的步数也比已发布的答案少。
\w*?(\w)(?=\w*?(\1))\w*
\w*? // 0 or more word chars, lazily matched
(\w) // a word char (as group 1)
(?= // look ahead and assert a match of:
\w*? // 0 or more word chars, lazily matched
(\1) // group 1 (as group 2)
) // end of assertion
\w* // 0 or more word chars