为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

素胚勾勒不出你 2021-09-14 21:12:30
我正在尝试设置一个正则表达式来匹配文本,并且我希望一个特定的字符串与文本其余部分的单独组匹配(如果存在)。例如,如果我的字符串是this is a test,我想this is a匹配第一组并test匹配第二组。我正在使用 python 正则表达式库。以下是我想要的结果的更多示例this is a test- 第 1 组:this is a,第 2 组:testone day at a time- 第 1 组:one day at a time,第 2 组:one day test is- 第 1 组:one day,第 2 组:testtesting, 1,2,3 - 不匹配this is not a drill- 第 1 组:this is not a drill,第 2 组:在这些情况下,我在第二组中匹配的特定字符串是 test。我不确定如何设置正则表达式以正确匹配这些特定情况。
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

您可以尝试以下正则表达式:


^(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


查看完整回答
反对 回复 2021-09-14
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

你可以试试这位朋友

^(?:(?!test))(?:(.*)(?=\btest\b)(\btest\b)|(.*))

解释

  • ^(?:(?!test)) - 负面展望。不要匹配任何以测试开头的内容。

  • (.*) - 匹配除换行符以外的任何内容。

  • (?=\btest\b)- 积极的前瞻。test单词边界之间的匹配。

  • (\btest\b)- 捕获组比赛test

  • | - 交替与逻辑 OR 相同。

  • (.*) - 匹配除换行符以外的任何内容。


查看完整回答
反对 回复 2021-09-14
  • 2 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信