Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 重叠前缀词regex_Python_Regex - Fatal编程技术网

Python 重叠前缀词regex

Python 重叠前缀词regex,python,regex,Python,Regex,如何处理我声明的前缀词重叠的情况? 在这个例子中,我在寻找hello或world后面的任何词,但当这些词组合在一起时,我希望regex移到第二行,并给出后面的内容。我希望这是有道理的。 以下是我所拥有的: (?:hello|world)(?:.*?\s+\S+) 结果如下所示: 你好234234sdfsfs 世界23424f 你好世界:sdfrwefwggds 粗体表示突出显示的区域 对于helloworld:sdfrwefwggds示例,我正在查找sdfrwefwggds 谢谢 您可以使

如何处理我声明的前缀词重叠的情况? 在这个例子中,我在寻找hello或world后面的任何词,但当这些词组合在一起时,我希望regex移到第二行,并给出后面的内容。我希望这是有道理的。 以下是我所拥有的:

(?:hello|world)(?:.*?\s+\S+)
结果如下所示:

  • 你好234234sdfsfs
  • 世界23424f
  • 你好世界:sdfrwefwggds
粗体表示突出显示的区域

对于
helloworld:sdfrwefwggds
示例,我正在查找
sdfrwefwggds

谢谢

您可以使用

 (?:hello|world)(?!\w*\s+(?:hello|world))(.*?\s+\S+)

详细信息

  • (?:hello | world)
    -两个词中的任意一个
  • (?!\w*\s+(?:hello | world))
    -在当前位置的右侧,不可能有
    • \w*
      -0+单词字符(使用
      [^\w\d\]*
      仅匹配字母)
    • \s+
      -1+空格
    • (?:hello | world)
      -两个词中的任意一个
  • (.*s+\s+)
    -第1组:
    • *?
      -0+字符,尽可能少,断线字符除外
    • \s+
      -1+空格
    • \S+
      -1+除空格以外的字符

也许
(?:hello | world)(?!\s+(?:hello | world))(.\s+\s+)
这是可行的,但可能会出现这样的情况,“hello”一词可以扩展到像“hellothere world”这样的其他词,然后用
(?!\w*\s+(?:hello | world))替换
(?!\w*\s+(?:hello | world))
@WiktorStribi是的!非常感谢!贴出了答案。