将文本匹配到多个组的正则表达式

我正在尝试设置一个正则表达式来匹配文本,并且我希望一个特定的字符串与文本其余部分的单独组匹配(如果存在)。

例如,如果我的字符串是this is a test,我想this is a匹配第一组并test匹配第二组。我正在使用 python 正则表达式库。以下是我想要的结果的更多示例

  • this is a test- 第 1 组:this is a,第 2 组:test

  • one day at a time- 第 1 组:one day at a time,第 2 组:

  • one day test is- 第 1 组:one day,第 2 组:test

  • testing, 1,2,3 - 不匹配

  • this is not a drill- 第 1 组:this is not a drill,第 2 组:

在这些情况下,我在第二组中匹配的特定字符串是 test。我不确定如何设置正则表达式以正确匹配这些特定情况。


素胚勾勒不出你
浏览 178回答 2
2回答

不负相思意

您可以尝试以下正则表达式:^(this.*?)(test)?$正则表达式的解释:NODE                     EXPLANATION--------------------------------------------------------------------------------  ^                        the beginning of the string--------------------------------------------------------------------------------  (                        group and capture to \1:--------------------------------------------------------------------------------    this                     'this'--------------------------------------------------------------------------------    .*?                      any character except \n (0 or more times                             (matching the least amount possible))--------------------------------------------------------------------------------  )                        end of \1--------------------------------------------------------------------------------  (                        group and capture to \2 (optional                           (matching the most amount possible)):--------------------------------------------------------------------------------    test                     'test'--------------------------------------------------------------------------------  )?                       end of \2 (NOTE: because you are using a                           quantifier on this capture, only the LAST                           repetition of the captured pattern will be                           stored in \2)--------------------------------------------------------------------------------  $                        before an optional \n, and the end of the                           string

慕的地6264312

你可以试试这位朋友^(?:(?!test))(?:(.*)(?=\btest\b)(\btest\b)|(.*))解释^(?:(?!test)) - 负面展望。不要匹配任何以测试开头的内容。(.*) - 匹配除换行符以外的任何内容。(?=\btest\b)- 积极的前瞻。test单词边界之间的匹配。(\btest\b)- 捕获组比赛test。| - 交替与逻辑 OR 相同。(.*) - 匹配除换行符以外的任何内容。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python