Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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
Python 如何仅在一行中发生两次时捕获组_Python_Regex - Fatal编程技术网

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
    • (\w+)\2
      匹配捕获组2中的1+单词字符,然后返回到组2以再次匹配相同字符
  • 关闭第1组
  • (?=.*?\1)
    正向前瞻以断言行中组1的捕获值
见a和a

范例

((\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
    • (\w+)\2
      匹配捕获组2中的1+单词字符,然后返回到组2以再次匹配相同字符
  • 关闭第1组
  • (?=.*?\1)
    正向前瞻以断言行中组1的捕获值
见a和a

范例

((\w+)\2)(?=.*?\1)

您可能必须在重复组之前插入“anyting”,即
(\w+).*\1
。要匹配任何重复的元素,还是只匹配重复的字符?也就是说,第二行中的也应该是匹配的吗?感谢您快速回复,我希望输出类似于两个城镇之间的翻滚麻烦!M{oo}n是很快在海上还是很快在天空?还没有人真正知道。您可能必须在重复组之前插入“anyting”,即
(\w+).*\1
。要匹配任何重复的元素,还是只匹配重复的字符?也就是说,第二行中的也应该是匹配的吗?感谢您快速回复,我希望输出类似于两个城镇之间的翻滚麻烦!M{oo}n是很快在海上还是很快在天空?还没有人知道。非常感谢!你真了不起,非常感谢!你真棒