Regex 如何编写匹配的正则表达式
鉴于以下数据Regex 如何编写匹配的正则表达式,regex,Regex,鉴于以下数据 “苹果橙李子” “苹果-葡萄-李子” 我将有一个给定的术语,它将决定某个东西是否匹配 e、 g“苹果橙李子梨樱桃” 我需要写一个正则表达式,它将匹配[1],但不匹配[2],因为我的术语不包含“grape” 我不知道正则表达式是否可以这样做?支持lookaheads(Javascript、PCRE、Ruby、Java、Python)的语言可以使用它们来测试行/字符串是否以任意顺序包含这些值: ^(?=.*\b(item1)\b)(?=.*\b(item2)\b)(?=.*\b(ite
“苹果橙李子”
“苹果-葡萄-李子”
我不知道正则表达式是否可以这样做?支持lookaheads(Javascript、PCRE、Ruby、Java、Python)的语言可以使用它们来测试行/字符串是否以任意顺序包含这些值:
^(?=.*\b(item1)\b)(?=.*\b(item2)\b)(?=.*\b(item3)\b)
对于您的[1.]数据,这将成为:
^(?=.*\b(apple)\b)(?=.*\b(orange)\b)(?=.*\b(plum)\b)
^(?=.*\b(apple)\b)(?=.*\b(grape)\b)(?=.*\b(plum)\b)
你可以在电视上看到这个
对于您的[2.]数据,这将成为:
^(?=.*\b(apple)\b)(?=.*\b(orange)\b)(?=.*\b(plum)\b)
^(?=.*\b(apple)\b)(?=.*\b(grape)\b)(?=.*\b(plum)\b)
你可以在电视上看到这个
当然,您不需要在lookaheads中包含捕获组。您可以简单地匹配这些项目(无捕获组),然后在模式末尾使用*
从行的开始到结尾进行匹配:
^(?=.*\bapple\b)(?=.*\borange\b)(?=.*\bplum\b).*
但是请注意,您不再在“匹配信息”下看到结果(未捕获任何内容),而是选择了整行,因为匹配是有效的。您可以使用
^(((apple|orange|plum|pear|chery)(?: |$))+)$
解释
(苹果|橙色|李子|梨|奇瑞)
这些词中的任何一个
(?:|$)
这是可能的。你用的是什么口味的正则表达式?你尝试过什么?我一直在玩很多变体,我花了几个小时在谷歌上搜索,我无法将它们编辑成匹配的内容。简短回答:是的,有规律的表达是可能的预期回答:嗨,Jose,可能就是这样,除了[1.],[2.]是为了澄清而添加的,这不是数据的一部分