簡體   English   中英

如何將嵌套表達式的內部表達式與正則表達式匹配?

[英]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)]並不表示您的想法,它表示的不是單詞,而是表示[]之間的所有字符
它起作用的唯一原因是因為您在startend之間有數字,如果您添加像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)

如果您不想捕獲startend以及它們之間的內容,也可以嘗試一下。

http://regex101.com/r/yP3iB0/23

暫無
暫無

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

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