代码之家  ›  专栏  ›  技术社区  ›  Dzmitry

regex贪婪匹配以字符或字符串结尾[重复]

  •  0
  • Dzmitry  · 技术社区  · 8 年前

    我有两条线:

    1) “已创建帐户所有者共享规则测试1”

    2) “已更新帐户所有者共享规则测试3:已将CaseAccessLevel从读/写更改为只读”

    作为正则表达式匹配的结果,我希望看到:

    1) 已创建帐户所有者共享规则测试1

    2) 更新的帐户所有者共享规则测试3

    分为4组:

    1) (已创建)(帐户)(所有者共享规则)(test1)

    2) (更新)(帐户)(所有者共享规则)(test3)

    '^(?P<action>^[^\s]+)\s(?P<target_object_label>.+)\s(?P<object_type>Owner\sSharing\sRule)\s(?P<object_label>.+)(?=:|$)
    

    但对于第二个字符串,第4组看起来像“test3:Changed CaseAccessLevel from Read/Write to Read Only”。

    本质上,regex应该停在行尾或“:”字符之前,但贪婪匹配不允许这样做。

    提前感谢您的回答,

    Dzmitry公司

    1 回复  |  直到 8 年前
        1
  •  0
  •   Jan    8 年前

    能够 执行:

    ^(?P<action>\S+)\ 
    (?P<target_object_label>.+)\s
    (?P<object_type>Owner\ Sharing\ Rule)\s
    (?P<object_label>[^:\n]+)               # stop before : or newline
    

    看见 a demo on regex101.com (注意不同的修饰语!)。