[英]How can i match inner expression on nested expression with regular expressions?
我在C#上獲得了這段代碼
這有效:
string code = "dqwdSTART12sdaSTART12312ENDsdfSTARTasdsaENDasdaENDqwe";
string pattern = "START[^(START)(END)]*END";
但這不是:
string code = "dqwdstart12sdastart12312endsdfstartasdsaendasdaendqwe";
string pattern = "start[^(start)(end)]*end";
我該如何比賽?
(最好是c#)
此模式[^(start)(end)]
並不表示您的想法,它表示的不是單詞,而是表示[
和]
之間的所有字符
它起作用的唯一原因是因為您在start
和end
之間有數字,如果您添加像s
這樣的字母,它將不起作用。
改用這種模式
START((?:(?!START|END).)*)END
帶有gi
選項的演示
START # "START"
( # Capturing Group (1)
(?: # Non Capturing Group
(?! # Negative Look-Ahead
START # "START"
| # OR
END # "END"
) # End of Negative Look-Ahead
. # Any character except line break
) # End of Non Capturing Group
* # (zero or more)(greedy)
) # End of Capturing Group (1)
END # "END"
(?<=start)(?:(?!start|end).)*(?=end)
如果您不想捕獲start
和end
以及它們之間的內容,也可以嘗試一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.