Php 如何匹配PCRE正则表达式中不包含特定前缀的URL
我有一个字符串列表,需要使用正则表达式进行筛选。一些字符串可能包含形式为“(随机字符)。(随机字符)。(随机字符)。(随机字符)。(随机字符)…”等的URL 我正在尝试创建一个正则表达式,该正则表达式将查找此类URL,但忽略第一组(随机字符)与“java”不匹配的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,
- “测试字符串(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,忽略完整字符串中的任何其他内容。