Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.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
Php 如何在正则表达式中匹配多个单词_Php_Javascript_Regex_Programming Languages_Lookahead - Fatal编程技术网

Php 如何在正则表达式中匹配多个单词

Php 如何在正则表达式中匹配多个单词,php,javascript,regex,programming-languages,lookahead,Php,Javascript,Regex,Programming Languages,Lookahead,只是一个简单的正则表达式,我不知道怎么写 正则表达式必须确保字符串与所有3个单词匹配。我知道如何使其与以下3项中的任何一项匹配: /advancedbrain|com_ixxocart|p\=completed/ 但我需要确保所有3个单词都出现在字符串中 下面是文字 高级大脑 com_ixOcart p=已完成 使用: 如果三个术语都存在,则匹配 如果需要避免以下情况,您可能需要在搜索词周围添加\b工作边界,以确保它们作为完整的词匹配,而不是其他词的子串(如高级脑死亡): ^(?=.*\bad

只是一个简单的正则表达式,我不知道怎么写

正则表达式必须确保字符串与所有3个单词匹配。我知道如何使其与以下3项中的任何一项匹配:

/advancedbrain|com_ixxocart|p\=completed/
但我需要确保所有3个单词都出现在字符串中

下面是文字

  • 高级大脑
  • com_ixOcart
  • p=已完成
  • 使用:

    如果三个术语都存在,则匹配

    如果需要避免以下情况,您可能需要在搜索词周围添加
    \b
    工作边界,以确保它们作为完整的词匹配,而不是其他词的子串(如
    高级脑死亡
    ):

    ^(?=.*\badvancebrain\b)(?=.*\bcom_ixxochart\b)(?=.*\bp=completed\b)
    
    使用前瞻:

    (?=.*\badvancebrain)(?=.*\bcom_ixxocart)(?=.*\bp=completed)
    
    秩序无关紧要。这三项都是必需的

    ^(?=.*?p=completed)(?=.*?advancebrain)(?=.*?com_ixxocart).*$
    

    花了太长时间测试和精炼=/Oh很好。。仍将发布我的答案

    因此,作为示例字符串,您可以使用“blah blah sample text advancebrain where#com_ixoxcart blah blah blahp=completedstuff”?我个人会使用3个正则表达式;作为一个查询字符串,它可能会非常难看,而且可能会更慢。这些是来自一个查询字符串吗?如果是这样,您可能不需要使用任何regexI,而需要将其插入google analytics提供给我的一个输入中。所以,我只能使用一个正则表达式。最好在一开始就锚定正则表达式,否则如果不是所有三个正则表达式都存在的话,你会得到糟糕的性能。我只得到一个输入字段来输入这个正则表达式,它用于谷歌分析。他们展示了一个简单的/yourregex/示例。你能猜到前瞻会起作用吗?我不知道他们将使用什么编程语言来运行regex。看起来GA(谷歌分析)支持前瞻。对于像go这样不支持向前看的语言,有没有解决办法?@klew:您需要硬编码所有可能的排列,因此对于检查
    a
    b
    c
    是否以任何顺序出现的正则表达式,您需要搜索
    a.*b.*c.*a.*c.*b.*b.*a.*c.*b.*a.*b.*c.*a.*b.*c.*b.*a
    。当然,这很容易出错,而且伸缩性很差,因此最好执行三个单独的正则表达式调用,每个标准一个,并确保所有三个都匹配。
    ^(?=.*?p=completed)(?=.*?advancebrain)(?=.*?com_ixxocart).*$