请帮我解决preg_match,我不知道:(
我有很多文本,但是我需要捕获“&”之间包含特定文本的所有内容。
示例
"thisip4:isatextexample&ineed.thistext&TXT:&andthis.idontneed&txt:&test.thistext&"
我需要提取&包含此文本之间的完整文本
结果应为:ineed.thistext
AND:test.thistext
很多人在此先感谢:)
哦,我尝试过使用它;
&([^\\n]*thistext[^\\n]*)&
,但不适用于多个'&'
W
答案 0 :(得分:1)
您的模式包含[^\n]*
,它与换行符以外的任何0+字符匹配,并使正则表达式引擎贪婪地在所有&
字符之间进行匹配,并找到该行的最后&
。
您可以使用
'~&([^&]*?thistext[^&]*)&~'
然后,获取组1的值。参见regex demo。
详细信息
&
-一个&
字符([^&]*?thistext[^&]*)
-捕获组1:
[^&]*?
-除&
以外的任何0+个字符,并且尽可能少thistext
-文字[^&]*
-除&
以外的任意0+个字符,并且尽可能多&
-一个&
字符$str = 'thisip4:isatextexample&ineed.thistext&TXT:&andthis.idontneed&txt:&test.thistext&';
if (preg_match_all('~&([^&]*?thistext[^&]*)&~', $str, $m)) {
print_r($m[1]);
}
// => Array ( [0] => ineed.thistext [1] => test.thistext )