Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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 如何匹配PCRE正则表达式中不包含特定前缀的URL_Php_Regex_Pcre - Fatal编程技术网

Php 如何匹配PCRE正则表达式中不包含特定前缀的URL

Php 如何匹配PCRE正则表达式中不包含特定前缀的URL,php,regex,pcre,Php,Regex,Pcre,我有一个字符串列表,需要使用正则表达式进行筛选。一些字符串可能包含形式为“(随机字符)。(随机字符)。(随机字符)。(随机字符)。(随机字符)…”等的URL 我正在尝试创建一个正则表达式,该正则表达式将查找此类URL,但忽略第一组(随机字符)与“java”不匹配的URL 例如,下面的字符串: “测试字符串(test.url.com)abcdef java.lang.uvwxyz www.google.com abcdef” 我希望它能匹配test.url.com和www.google.com,

我有一个字符串列表,需要使用正则表达式进行筛选。一些字符串可能包含形式为“(随机字符)。(随机字符)。(随机字符)。(随机字符)。(随机字符)…”等的URL

我正在尝试创建一个正则表达式,该正则表达式将查找此类URL,但忽略第一组(随机字符)与“java”不匹配的URL

例如,下面的字符串:

  • “测试字符串(test.url.com)abcdef java.lang.uvwxyz www.google.com abcdef”

    我希望它能匹配test.url.com和www.google.com,但不能匹配java.lang.com

  • “另一个测试字符串/abc/xyz/lib/def/GH.tr test 200。”

    我不想让它和GH.tr匹配

我当前的正则表达式将与以下匹配:

  • test.url.com
  • java.lang.Assertion
  • www.google.com
  • GH.tr
这是我当前的正则表达式,我尝试使用负前瞻:

(?!java)(?:(?:\w+\)++[\w]+)


我的正则表达式遗漏了什么?

您得到了这些匹配项,因为负前瞻
(?!java)
断言直接在右边的不是java

如果位置正好位于
java.lang.Assertion
之前,则为false,因此不匹配

但是接下来转到
j
,断言为true,因为右侧现在是
ava.lang.assertion
,因此将匹配

一个选择是匹配您不想继续使用的内容。然后匹配你想要保留的内容

\bjava(?:\.\w+)+(*SKIP)(*FAIL)|(?<!/)\b\w+(?:\.\w+)+
\bjava(?:\.\w+)(*跳过)(*失败)|(?
那会匹配的

  • \bjava(?:\。\w++(*跳过)(*失败)
    模式以匹配您不想保留的内容
  • |
  • (?负回溯,断言左侧不是正斜杠
  • \b\w+(?:\。\w+)
    要匹配以单词边界开头的模式

|

之所以得到这些匹配,是因为负前瞻
(?!java)
断言直接在右边的不是java

如果位置正好位于
java.lang.Assertion
之前,则为false,因此不匹配

但是接下来转到
j
,断言为true,因为右侧现在是
ava.lang.assertion
,因此将匹配

一个选择是匹配你不想继续使用的内容,然后匹配你想保留的内容

\bjava(?:\.\w+)+(*SKIP)(*FAIL)|(?<!/)\b\w+(?:\.\w+)+
\bjava(?:\.\w+)(*跳过)(*失败)|(?
那会匹配的

  • \bjava(?:\。\w++(*跳过)(*失败)
    模式以匹配您不想保留的内容
  • |
  • (?负回溯,断言左侧不是正斜杠
  • \b\w+(?:\。\w+)
    要匹配以单词边界开头的模式

|

谢谢Emma,我一直在使用该工具尝试帮助我。你说我不想要java或GH是正确的,但我想匹配任何其他URL,忽略完整字符串中的任何其他内容。谢谢Emma,我一直在使用该工具尝试帮助我。你说我不想要java或GH是正确的,但我想匹配任何其他URL其他URL,忽略完整字符串中的任何其他内容。