簡體   English   中英

使用括號的正則表達式模式

[英]Regex Pattern Using Brackets

伙計們,這是一個簡單的問題。 我正在嘗試創建一種與C#中的Regex一起使用的模式。

這是我的嘗試:

"(value\":\[\[\"([A-Za-z0-9]+(?:-{0,1})[A-Za-z0-9]+)\"\]\])"

但是由於某種原因,當我去編譯它時,在括號中得到了“無法識別的轉義序列”。 我可以不簡單地使用\\來逃避括號嗎?

我要搜索的字符串的形式為

value":[["AB-AB"]]

要么

value":[["ABAB"]]

我想從結果中抓取group [1]。

默認情況下,C#編譯器不允許它無法識別的轉義序列。 您可以這樣使用“ @”來覆蓋此行為:

@"(value\"":\[\[\""([A-Za-z0-9]+(?:-{0,1})[A-Za-z0-9]+)\""\]\])"

編輯:

@符號要復雜得多。 引用@Guffa:

@分隔的字符串根本不對轉義序列使用反斜杠。

此外,應該注意的是,在這樣的字符串中用\\"替換為""

我建議您在實現否定的字符類以匹配上下文的同時,將您的模式放在逐字字符串內。 然后參考第一組以獲取比賽結果。

String s = @"I have value"":[[""AB-AB""]] and value"":[[""ABAB""]]";
foreach (Match m in Regex.Matches(s, @"value"":\[\[""([^""]+)""]]"))
         Console.WriteLine(m.Groups[1].Value);

輸出量

AB-AB
ABAB

暫無
暫無

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

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