我有两个字符串:
1)"创建帐户所有者共享规则test1"
2)"更新了帐户所有者共享规则test3:将CaseAccessLevel从读/写更改为只读"
作为正则表达式匹配的结果,我希望看到:
1)创建了帐户所有者共享规则test1
2)更新了帐户所有者共享规则test3
分为4组:
1)(已创建)(帐户)(所有者共享规则)(test1)
2)(更新)(账户)(业主分享规则)(test3)
出于这个目的,我尝试使用下一个python正则表达式:
'^(?P<action>^[^\s]+)\s(?P<target_object_label>.+)\s(?P<object_type>Owner\sSharing\sRule)\s(?P<object_label>.+)(?=:|$)
但是对于第二个字符串,第4组看起来像&#39; test3:将CaseAccessLevel从读/写更改为只读&#39;。
基本上正则表达式应该在行尾或之前停止:&#39;性格但贪婪的比赛不允许这样做。
提前感谢您的答案,
Dzmitry
答案 0 :(得分:0)
您 可以 执行:
^(?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(请注意不同的修饰符!)。