簡體   English   中英

如何告訴notepad ++正則表達式不貪心?

[英]How to tell notepad++ regular expression to be non greedy?

我想先在notepad ++中測試我的正則表達式,然后再讓它們在框外播放。 該表達式本身可以工作,但是應該告訴它不要貪心。 盡管我知道如何在PHP中執行此操作,但我不知道如何在記事本中執行此操作。

我的表情:

(#([^\]]+))?stop_here\?([^\]]+)

我會在PHP中使用u-modifier來做到這一點:

preg_match_all("/(#([^\]]+))?stop_here\?([^\]]+)/U", $input_string, $result_array);

通過添加? 在量詞之后? +* ,它們變得非貪婪:

(#([^\]]+?))??stop_here\??([^\]]+?)

也可以在PCRE PHP函數中使用,例如preg_match

正如TwiNight所寫,您必須在每個量詞后面添加一個問號。

請注意,如果要在開箱即用之前測試php regex,最好的方法是對PHP使用正則表達式測試器(例如: http : //www.pagecolumn.com/tool/pregtest.htm或其他)。 Notepad ++只能做到這一點。

請記住,非貪婪的量詞速度很慢(因為正則表達式引擎執行了許多回溯)。 您應盡可能避免使用它們。 您也可以使用更快的所有格量詞(但不適用於notepad ++)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM