我正在写一个正则表达式来匹配字符串,直到特定的单词(如果单词在字符串中(,否则需要匹配整个字符串。并且匹配结果应该是组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