簡體   English   中英

非貪婪的正則表達式替換

[英]Non-greedy regex replacement

我有以下文件:

STRING1
   "string2" = 1 ;
STRING1
   "string4" = 1 ;
STRING1

   "string3" = 1 ;
STRING1
"string5" = 1 ;

我想替換為:

STRING1

   "string3" = 1 ;

通過:

STRING1

   "string3" = 2 ;

使用(STRING1.*?".*?".*?=)(.*?)\\; (甚至(STRING1.*?"string.?".*?=)(.*?)\\; ),我都可以匹配單個STRING1 ... ; 塊,但如果我使用(STRING1.*?"string3.?".*?=)(.*?)\\; 正則表達式將所有內容匹配到string3塊。

不使用STRING1.*? 當你知道.*? 不能包含特定字符。 在這種情況下,它肯定看起來像.*? 最好寫成[^;"]* 。您想用類似的替換方式來替換".*?=大小寫。

(STRING1[^;"]*"string3"[^"=]*=)[^;]*;

您仍然需要處理在文件中如何表示帶引號的字符串。 如果這些字符串之一包含您的整個問題怎么辦?

完全可靠的修復程序實際上會解析整個文件以尋找要進行的更改,但這可能對您的情況有些過分。

暫無
暫無

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

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