我想從所有三種類型的輸入中獲取一些文本,但無法弄清楚如何處理未引用的情況。如何匹配雙引號或單引號或不帶正則表達式?
到目前爲止,我有:
name=['"](.*?)['"]
輸入:
name="sometext"
name='sometext'
name=sometext
我想從所有三種類型的輸入中獲取一些文本,但無法弄清楚如何處理未引用的情況。如何匹配雙引號或單引號或不帶正則表達式?
到目前爲止,我有:
name=['"](.*?)['"]
輸入:
name="sometext"
name='sometext'
name=sometext
看起來您是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);
我會使用OR運算符|
到separatly指定的三種情況:
('[^'"]*')|("[^'"]*")|([^'"]*)
根據正則表達式您正在使用的方言,您必須定義由OR運算符分隔的非匹配組,以及匹配組爲[^'"]*
。
不知道可能是什麼之後「NAME = ASDF」,承擔起它的空白或無
定界結束。
name=
(?:
(['"])((?:(?!\1).)*)\1 # (1,2)
| (\S*) # (3)
)
回答是$ 3
catted $ 2( '[^'] * ')|(「[^'] * 」)|([^'「] *) – Uri 2017-03-12 18:47:12