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
Php 正则表达式排除搜索短语?_Php_Regex_Regex Negation - Fatal编程技术网

Php 正则表达式排除搜索短语?

Php 正则表达式排除搜索短语?,php,regex,regex-negation,Php,Regex,Regex Negation,我过滤一个字符串并像这样搜索 /(?=测试)。*/s 它起作用了。但如何从结果中排除搜索短语?我只想要这个单词后面的其余部分…我猜可能一个带有单词边界的表达式可以工作: (?=.*\btest\b.*).*(\btest\b).* 对于非测试零件,我们还可以包括非捕获组: (?=.*\btest\b.*)(?:.*)(\btest\b)(?:.*) 实例 您还可以通过匹配最后一次出现的测试来获得匹配,而无需进行积极的前瞻,然后使用\K忘记匹配的内容。您还可以使用\h匹配以下水平空白字符 ^.

我过滤一个字符串并像这样搜索
/(?=测试)。*/s


它起作用了。但如何从结果中排除搜索短语?我只想要这个单词后面的其余部分…

我猜可能一个带有单词边界的表达式可以工作:

(?=.*\btest\b.*).*(\btest\b).*
对于非测试零件,我们还可以包括非捕获组:

(?=.*\btest\b.*)(?:.*)(\btest\b)(?:.*)
实例
您还可以通过匹配最后一次出现的测试来获得匹配,而无需进行积极的前瞻,然后使用
\K
忘记匹配的内容。您还可以使用
\h
匹配以下水平空白字符

^.*\btest\b\h*\K.*$

如果你想在第一次出现
test
之后得到剩余的,你可以使点非贪婪
*?


另一个选项是在
\btest\b
上拆分,以获取所有部分并选择要保留的部分。

您需要提供一个搜索字符串示例以及您在其中特别查找的内容。如果您查看表达式,我会在此处搜索字符串“test”。但我想把这句话留在我的字串里。我只想排除其他匹配项,并向我们提供您实际搜索的数据样本。我的意思是给我们一个URL或任何你正在运行的正则表达式。你应该使用向后看,而不是向前看。
(?=.*\btest\b.*)(\btest\b.*)。*(\btest\b)。*
=
*(\btest\b)。*
<代码>(?=.*\btest\b.*)(?:.*)(\btest\b)(?:.*)的效率更低。请考虑接受。
^.*\btest\b\h*\K.*$