Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何编写匹配的正则表达式_Regex - Fatal编程技术网

Regex 如何编写匹配的正则表达式

Regex 如何编写匹配的正则表达式,regex,Regex,鉴于以下数据 “苹果橙李子” “苹果-葡萄-李子” 我将有一个给定的术语,它将决定某个东西是否匹配 e、 g“苹果橙李子梨樱桃” 我需要写一个正则表达式,它将匹配[1],但不匹配[2],因为我的术语不包含“grape” 我不知道正则表达式是否可以这样做?支持lookaheads(Javascript、PCRE、Ruby、Java、Python)的语言可以使用它们来测试行/字符串是否以任意顺序包含这些值: ^(?=.*\b(item1)\b)(?=.*\b(item2)\b)(?=.*\b(ite

鉴于以下数据

  • “苹果橙李子”
  • “苹果-葡萄-李子”
  • 我将有一个给定的术语,它将决定某个东西是否匹配

    e、 g“苹果橙李子梨樱桃”

    我需要写一个正则表达式,它将匹配[1],但不匹配[2],因为我的术语不包含“grape”


    我不知道正则表达式是否可以这样做?

    支持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.]是为了澄清而添加的,这不是数据的一部分