[英]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.