我想在notepad++中测试我的正则表达式,然后让它们在盒子外播放。表达式本身可以工作,但是应该告诉它不要贪心。虽然我知道如何在PHP中做到这一点,但我不知道如何在记事本中做到这一点。
我的表达式:
(#([^']]+))?stop_here'?([^']]+)
我将在PHP中使用u修饰符:
preg_match_all("/(#([^']]+))?stop_here'?([^']]+)/U", $input_string, $result_array);
通过在量词?
、+
、*
后加一个?
,它们变成非贪婪的:
(#([^']]+?))??stop_here'??([^']]+?)
也适用于PCRE PHP函数,如preg_match
正如TwiNight所写的,你必须在每个量词后面加上问号。
请注意,如果您想在让php正则表达式在箱外运行之前测试它们,最好的方法是为php 使用正则表达式测试器(例如:http://www.pagecolumn.com/tool/pregtest.htm或其他)。notepad++在这方面非常有限。
请记住,非贪婪量词很慢(因为regex引擎做了很多回溯)。如果可能的话,你应该尽量避免。您也可以使用更快的所有格量词(但不要使用notepad++)。