python-Regex匹配到单词,如果单词被找到,则匹配完整的字符串和匹配组将大于0



我正在写一个正则表达式来匹配字符串,直到特定的单词(如果单词在字符串中(,否则需要匹配整个字符串。并且匹配结果应该是组1。这里的单词是:-我的单词

mylaptop我的话>mylaptop(第1组匹配(

mylaptop>mylaptop(第1组匹配(

mylaptop我的话你好我的话>mylaptop我的单词你好(第1组匹配(

到目前为止,我尝试了这个:

([sS]+)-my-word|([sS]+)

但它给了我

mylaptop我的话>mylaptop(第1组匹配(

mylaptop>mylaptop(第2组匹配(

需要是第1组匹配

您可以使用

(?s)^((?:(?!-my-word).|-my-word(?=.*-my-word))+)

请参阅regex演示。

详细信息

  • (?s)-re.DOTALL内联修饰符标志
  • ^-字符串的开头
  • (?:(?!-my-word).|-my-word(?=.*-my-word))+-出现一次或多次:
    • (?!-my-word).-不是-my-word字符序列起点的任何字符
    • |-或
    • -my-word(?=.*-my-word)--my-word,在任何零个或多个尽可能多的字符后跟另一个-my-word

最新更新