我想使用.*?
模式实现非贪婪的匹配。但是,我遇到了一个示例字符串,显示非贪婪的匹配不起作用。这是代码和示例字符串:
preg_match_all('/\<w:t.*?\>\<w:p\>/', '<w:t xml:space="preserve"></w:t></w:r><w:r><w:rPr><w:b/></w:rPr><w:t xml:space="preserve">Text 1 </w:t></w:r><w:r><w:rPr><w:b/><w:u w:val="single"/><w:color w:val="ff0000"/></w:rPr><w:t xml:space="preserve"></w:t></w:r><w:r><w:rPr><w:b/><w:u w:val="single"/><w:color w:val="ff0000"/><w:i/></w:rPr><w:t xml:space="preserve">Text 2</w:t></w:r><w:r><w:t xml:space="preserve"></w:t></w:r><w:r><w:t xml:space="preserve"></w:t></w:r><w:r><w:t xml:space="preserve"></w:t></w:r></w:p></w:t></w:r></w:p><w:p w:rsidRDefault="004D3323" w:rsidP="003F03B1"><w:r><w:t><w:p>', $match);
但如果我print_r
$match
变量,我看到这个模式匹配整个字符串。但是,我想要的只是匹配如下字符串:
"<w:t><w:p>" and "<w:t any text may go here><w:p>"
那么,我做错了什么以及如何解决?谢谢!