我一直試圖在比賽前提取單詞。例如,我有以下一句:正則表達式在比賽前返回單詞
「Allatoona是位於東南極巴託縣的一個小鎮,格魯吉亞。」
我想「巴託」之前提取的單詞。
我試過以下的正則表達式來提取這個詞:
\w\sCounty,
我得到回到什麼是「W縣」當我想要的東西只是一個詞巴託。
任何援助將不勝感激。謝謝!
我一直試圖在比賽前提取單詞。例如,我有以下一句:正則表達式在比賽前返回單詞
「Allatoona是位於東南極巴託縣的一個小鎮,格魯吉亞。」
我想「巴託」之前提取的單詞。
我試過以下的正則表達式來提取這個詞:
\w\sCounty,
我得到回到什麼是「W縣」當我想要的東西只是一個詞巴託。
任何援助將不勝感激。謝謝!
你可以使用這個表達式與前瞻County
之前找到的字:
\w+(?=\s+County)
(?=\s+County)
是一個積極的預測先行斷言的1個或多個空格,後面的字County
超前電流匹配的存在。
如果你想避免超前,那麼你可以使用一個捕獲組:
(\w+)\s+County
和提取捕獲組#1的比賽結果。
你\w\sCounty,
正則表達式返回w County
因爲\w
匹配單字符是字母,數字或_
。它不匹配整個字。
要匹配1個或更多的符號,你需要使用一個+
量詞和捕捉你需要提取你可以依靠捕獲組,(...)
的部分。
所以,你可以通過僅僅用(\w+)
代替\w
來修復你的模式,然後在比賽結束後訪問Match.Groups[1].Value
。
但是,如果縣名包含非單詞符號(如連字符),則\w+
將不匹配它。 A \S+
與1個或更多匹配非空白符號可能會成爲更好的選擇。
看到一個C# demo:
var m = Regex.Match(s, @"(\S+)\s+County");
if (m.Success)
{
Console.WriteLine(m.Groups[1].Value);
}
看到一個regex demo。