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.*$