我目前正在使用asp.net和C#構建一個網頁。我無法解析用戶提供的字符串。例如,用戶提供了下面的字符串,我需要提取單引號或雙引號之外的單詞。有人可以幫我解決這個問題嗎?提前感謝你的幫助。正則表達式提取單引號或雙引號之外的字符串
"we run" live "experiments" inside and outside 'a lab'
使用正則表達式
預期的結果是:
live
inside
and
outside
我目前正在使用asp.net和C#構建一個網頁。我無法解析用戶提供的字符串。例如,用戶提供了下面的字符串,我需要提取單引號或雙引號之外的單詞。有人可以幫我解決這個問題嗎?提前感謝你的幫助。正則表達式提取單引號或雙引號之外的字符串
"we run" live "experiments" inside and outside 'a lab'
使用正則表達式
預期的結果是:
live
inside
and
outside
這將做到這一點。所有小組賽 '所享有' 匹配你想要什麼:
(?<unquote>[^"'\s]+)|(?:["][^"]+?["])|(?:['][^']+?['])
C#的測試代碼:
var matches = Regex.Matches(@"""we run"" live ""experiments"" inside and outside 'a lab'", @"(?<unquote>[^""'\s]+)|(?:[""][^""]+?[""])|(?:['][^']+?['])");
foreach(Match match in matches)
{
if(match.Groups["unquote"].Success)
{
Console.WriteLine(match.Groups["unquote"].Value.Trim());
}
}
輸出:
現場
內
和
外
其中:
<unquote>
把一個叫做所享有^"'\s
方法相匹配的一切,是不是雙單引號或空間羣手段。(?:["][^"]+?["])
表示在引用下一個報價單內的所有內容。注意+?這樣就不會貪婪和?:這樣該組就不會被捕獲。單引號一樣。這將使用空字符串「」和單引號嵌套在雙引號中的字符串。你想忽略撇號嗎?如果是的話,那麼你需要擴展正則表達式以允許'前面沒有空格:
(?<unquote>(?>[^"\s](?<!\s[']))+)|(?:["][^"]+?["])|(?:['][^']+?['])
祝你好運與你的現場實驗。
它像一個魅力一樣工作。謝謝! – user2802962
var parts = Regex.Split(input, @"[""'].+?[""']")
.SelectMany(x => x.Split())
.Where(s => !String.IsNullOrWhiteSpace(s))
.ToList();
或
var parts = Regex.Split(input, @"[""'].+?[""']")
.SelectMany(x => x.Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries))
.ToList();
這是否允許:''live''? –