2011-04-04 74 views

回答

7

使用該正則表達式:

(?<=\[)[A-Za-z]+(?=\]) 

比賽以粗體:

[]或[AAA]或[BAB] ([ ] * [B] +> [AAA])

你可以使用它像:

var matches = Regex.Matches(input, @"(?<=\[)[A-Za-z]+(?=\])"); 
+1

一個小問題,**?<= **或**?= **是做什麼的?我假設它在** C#正則表達式中僅工作**(?)。 – 2011-04-04 11:36:18

+0

@MPękalski,'?<='是一個積極的lookbehind斷言,'?='是一個積極的lookahead斷言。問題在'c#'標記下,所以這應該起作用。 – Alex 2011-04-04 11:40:16

+2

+1,但我認爲你需要'+'而不是'*'。 – 2011-04-04 11:42:03

4

這個怎麼樣的正則表達式?

\[([a-zA-Z]+)\] 
+0

爲什麼你用'(...)*'包裝模式?我沒有看到任何優勢......它會將'[a] [b]'結合到一個單一的比賽中,並且會添加大量的空白比賽。除此之外,如果可能的話,我也更喜歡使用捕獲組來查找。 – Kobi 2011-04-04 11:40:48

+0

@Kobi更正。 – 2011-04-04 11:46:06

相關問題