簡體   English   中英

C#正則表達式用於帶分隔符的方括號中的單詞

[英]c# Regular expression for words in brackets with separator

我需要解析文本,並檢查是否所有方括號之間是一個-和前后-必須至少有一個字符。 我嘗試了以下代碼,但是它不起作用。 比賽人數過多。

Regex regex = new Regex(@"[\.*-.*]");
MatchCollection matches = regex.Matches(textBox.Text);

示范文本:

Node
  (Entity [1-5])

想通了,我不妨提供一個答案...重申我的觀點(進行修改):

  1. *匹配0個或多個事件。 您可能想要+。
  2. 方括號是特殊字符,需要將其轉義。 它們用於定義字符集。
  3. 您可能要從“任何字符”匹配項中排除[]

將所有這些放在一起,以下內容將使您更好:

Regex regex = new Regex(@"\[[^-[\]]+-[^[\]]+\]");

盡管有點混亂,但關鍵是[^[\\]]表示除方括號外的任何字符。 [^-[\\]]表示但也不允許- 這是一項優化,不是必需的,但它只是減少了正則表達式引擎在進行匹配時要做的工作。 感謝ridgerunner指出這種優化。

方括號表示正則表達式中的特殊內容,您需要對其進行轉義。 另外,如果要至少一個字符,則需要使用+而不是*

Regex regex = new Regex(@"\[.+-.+\]");
MatchCollection matches = regex.Matches(textBox.Text);
 string txt = "(Entity [1-5])";
 Regex reg = new Regex(@"\[.+\-.+\]");

如果用於#:

 string txt = "(Entity [1-5])";
 Regex reg = new Regex(@"\[\d+\-\d+\]");

暫無
暫無

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

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