python 如果找到单词,则正则表达式匹配直到单词,否则匹配完整的字符串,匹配组将大于 0

python Regex match till word if word found else match complete string and match group will be greater then 0

我正在编写一个正则表达式来匹配字符串直到特定单词(如果单词在字符串中),否则需要匹配完整字符串。比赛结果应为第 1 组。 这里的单词是:-my-word

mylaptop-my-word > mylaptop(第 1 组比赛)

我的笔记本电脑 > 我的笔记本电脑(第 1 组比赛)

mylaptop-my-word-hello-my-word > mylaptop-my-word-hello(第 1 组比赛)

到目前为止我试过这个:

([\s\S]+)-my-word|([\s\S]+)

但它给了我

mylaptop-my-word > mylaptop(第 1 组比赛)

mylaptop > mylaptop(group2 比赛)

需为group1匹配

您可以使用

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

参见regex demo

详情:

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