2012-04-25 112 views

回答

4

看起來您是C#開發人員,因此您可以使用第一個匹配組來確保它使用相同的引用關閉(因此支持phrase="Don't forget apostrophes")。

Regex regex1 = new Regex(@"=(?:(['""])(.*?)\1|.*)"); 

string text = @" 
name=""don't forget me"" 
name='sometext' 
name='sometext' 
name=sometext 
"; 

foreach (Match m in regex1.Matches(text)) 
    Console.WriteLine (m.Groups[2].Value); 
1

我會使用OR運算符|到separatly指定的三種情況:

('[^'"]*')|("[^'"]*")|([^'"]*) 

根據正則表達式您正在使用的方言,您必須定義由OR運算符分隔的非匹配組,以及匹配組爲[^'"]*

+0

catted $ 2( '[^'] * ')|(「[^'] * 」)|([^'「] *) – Uri 2017-03-12 18:47:12

0

不知道可能是什麼之後「NAME = ASDF」,承擔起它的空白或無
定界結束。

name= 
(?: 
    (['"])((?:(?!\1).)*)\1 # (1,2) 
| (\S*)      # (3) 
) 

回答是$ 3

相關問題