Python 如何仅在一行中发生两次时捕获组
只有在一行中发现两次匹配时,我应该如何使匹配发生Python 如何仅在一行中发生两次时捕获组,python,regex,Python,Regex,只有在一行中发现两次匹配时,我应该如何使匹配发生 仅当随后在同一行中出现另一个相邻的两个“o”时,才高亮显示彼此相邻的两个“o”的正则表达式您可以将单个单词字符与反向引用进行匹配,然后再次分组 当组嵌套时,单词字符将变为组2,然后外部组将变为组1 然后,您可以在行中再次使用正向前瞻来断言组1 import re text = """ Tumble Trouble Twwixt Two Towns! Was the Moon soon in the Sea Or s
仅当随后在同一行中出现另一个相邻的两个“o”时,才高亮显示彼此相邻的两个“o”的正则表达式您可以将单个单词字符与反向引用进行匹配,然后再次分组 当组嵌套时,单词字符将变为组2,然后外部组将变为组1 然后,您可以在行中再次使用正向前瞻来断言组1
import re
text = """
Tumble Trouble Twwixt Two Towns!
Was the Moon soon in the Sea
Or soon in the sky?
Nobody really knows YET.
"""
模式匹配:
Capturegroup 1(
匹配捕获组2中的1+单词字符,然后返回到组2以再次匹配相同字符(\w+)\2
关闭第1组)
正向前瞻以断言行中组1的捕获值(?=.*?\1)
((\w+)\2)(?=.*?\1)
您可以将单个单词char与backreference进行匹配,然后再次对其进行分组 当组嵌套时,单词字符将变为组2,然后外部组将变为组1 然后,您可以在行中再次使用正向前瞻来断言组1
import re
text = """
Tumble Trouble Twwixt Two Towns!
Was the Moon soon in the Sea
Or soon in the sky?
Nobody really knows YET.
"""
模式匹配:
Capturegroup 1(
匹配捕获组2中的1+单词字符,然后返回到组2以再次匹配相同字符(\w+)\2
关闭第1组)
正向前瞻以断言行中组1的捕获值(?=.*?\1)
((\w+)\2)(?=.*?\1)
您可能必须在重复组之前插入“anyting”,即
(\w+).*\1
。要匹配任何重复的元素,还是只匹配重复的字符?也就是说,第二行中的也应该是匹配的吗?感谢您快速回复,我希望输出类似于两个城镇之间的翻滚麻烦!M{oo}n是很快在海上还是很快在天空?还没有人真正知道。您可能必须在重复组之前插入“anyting”,即(\w+).*\1
。要匹配任何重复的元素,还是只匹配重复的字符?也就是说,第二行中的也应该是匹配的吗?感谢您快速回复,我希望输出类似于两个城镇之间的翻滚麻烦!M{oo}n是很快在海上还是很快在天空?还没有人知道。非常感谢!你真了不起,非常感谢!你真棒