簡體   English   中英

我怎樣才能獲得正則表達式的某個細分?

[英]How can I get a certain segment with regex?

我有一個簡單的字符串

testteststete(segment1)tete(segment2)sttes323testte(segment3)eteste

我需要獲取(segment2)。 每個段可以是任何文本。 我試圖使用此正則表達式\\(.+\\) 但是我得到這個結果

在此處輸入圖片說明

我如何獲得(segment2)? PS:我想將所有細分都放在方括號中

在C#中,您可以只匹配所有(...)子字符串,然后使用索引1訪問第二個字符串:

var rx = @"\([^)]*\)";
var matches = Regex.Matches(str, rx).Cast<Match>().Select(p => p.Value).ToList();
var result = matches != null && matches.Count > 1 ? matches[1] : string.Empty;

IDEONE演示

正則表達式匹配

  • \\( -開頭(
  • [^)]* -比其他0個或更多字符)
  • \\) -結束)

我無法對其進行測試,但這可能可以工作:

\([^\)]*\)

您可以嘗試使用此正則表達式:

\(([^)]+)\)

正則演示

(?<=^[^()]*\([^)]*\)[^()]*\()[^)]*

您可以簡單地使用它。 觀看演示

var regex = new Regex(@"\(([^)]*)\)", RegexOptions.Compiled);
string secondMatch = regex.Matches(text).Cast<Match>()
    .Select(m => m.Value.Trim('(', ')'))
    .ElementAtOrDefault(1);

暫無
暫無

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

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