模式:
^<p .*> </p>$
输入:
<p style="margin-bottom: 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; font-size: 14px; background-color: #ffffff;" class="MsoNormal">aaa</p><p style="margin-bottom: 15px; padding: 0px; text-align: justify; font-family: 'Open Sans', Arial, sans-serif; font-size: 14px; background-color: #ffffff;" class="MsoNormal"> </p>
整个输入都匹配。 我在http://regexstorm.net/tester和
上尝试过答案 0 :(得分:2)
正则表达式通常是“贪婪的”。这意味着它们将尽可能地匹配。
您要表达的内容包括.*
,它将匹配0次或更多次的任何字符。其中包括中间的所有<p>...</p>
。
此外,由于使用了^...$'
,因此表达式试图匹配整行。
从本质上讲,您的正则表达式与您要执行的操作完全匹配:以<p
开头并以> </p>
结尾的整行
如果要查找要搜索的字符串的特定部分,则需要更好的正则表达式
答案 1 :(得分:1)
您使用了一个贪婪的量词.*
,该词会占用尽可能多的内容,然后回溯以匹配模式的其余部分。如果您的情况与整个文本匹配,然后回溯到 </p>
的第一次出现。
顺便说一句。您还可以使用^...$
来强制整个文本或什么都不做。
请参阅本段的第二个示例:https://medium.com/textmaster-engineering/performance-of-regular-expressions-81371f569698#c8c3