如何获取标签之间包含特定字符串的文本
How do I get text containing a certain string between tags
请帮我解决preg_match,我想不通:(
我有很多文本,但我需要捕获“&”之间包含特定文本的所有内容。
示例
"thisip4:isatextexample&ineed.thistext&TXT:&andthis.idontneed&txt:&test.thistext&"
我需要提取包含此文本的&之间的完整文本
结果应该是:ineed.thistext
和:test.thistext
非常非常感谢 :)
哦,我试过用这个;
&([^\n]*thistext[^\n]*)&
但这不适用于多个“&”
W
您的模式包含 [^\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 )
请帮我解决preg_match,我想不通:(
我有很多文本,但我需要捕获“&”之间包含特定文本的所有内容。
示例
"thisip4:isatextexample&ineed.thistext&TXT:&andthis.idontneed&txt:&test.thistext&"
我需要提取包含此文本的&之间的完整文本
结果应该是:ineed.thistext
和:test.thistext
非常非常感谢 :)
哦,我试过用这个;
&([^\n]*thistext[^\n]*)&
但这不适用于多个“&”
W
您的模式包含 [^\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 )