如果子字符串已经匹配,则REGEX不匹配字符串

zazmityj  于 2023-03-09  发布在  其他
关注(0)|答案(3)|浏览(192)

输入文本-

hey, G Suite , ,Social Media Wall, Social Media Wall , ERP ERP Corecon

查询-

((?<=[,-./\s])(ERP Corecon|Social Media|Social Media Wall|ROI|ERP)\b)

输出-

hey, G Suite , ,**Social Media** Wall, **Social Media** Wall , **ERP** **ERP Corecon**

理想输出-社交媒体和社交媒体墙应匹配
正则表达式链接-https://regexr.com/6ugr5

goucqfw6

goucqfw61#

您可以使用以下正则表达式:

(?<=[,-./\s])(ERP(?: Corecon)?|Social Media(?: Wall)?|ROI)\b

RegEx Demo

正则表达式分解:

  • (?<=[,-./\s]):LookbehindAssert当前位置之前存在这些字符
  • (;开始捕获组
  • ERP(?: Corecon)?:匹配ERPERP Corecon
  • |:或
  • Social Media(?: Wall)?:匹配Social MediaSocial Media Wall
  • |:或
  • ROI:匹配ROI
  • ):结束捕获组
  • \b:字边界
omqzjyyz

omqzjyyz2#

您可以尝试使用命名组:

(?<SocialMediaWall>(?<SocialMedia>Social Media)( Wall)?)|(?<ERPCore>(?<ERP>ERP)( Corecon)?)|(?<ROI>ROI)

正如您所看到的,SocialMedia组嵌套在SocialMediaWall组中,这是获取两个值的一种方法。

whhtz7ly

whhtz7ly3#

你所有的解决方案都很有趣,但我最终将正则表达式查询排序为降序,其中较长的关键字排在第一位,因此永远不允许子字符串排在字符串之前。

相关问题