2017-06-18 68 views
2

我一直試圖在比賽前提取單詞。例如,我有以下一句:正則表達式在比賽前返回單詞

Allatoona是位於東南極巴託縣的一個小鎮,格魯吉亞。」

我想「巴託」之前提取的單詞。

我試過以下的正則表達式來提取這個詞:

\w\sCounty, 

我得到回到什麼是「W縣」當我想要的東西只是一個詞巴託。

任何援助將不勝感激。謝謝!

回答

4

你可以使用這個表達式與前瞻County之前找到的字:

\w+(?=\s+County) 

(?=\s+County)是一個積極的預測先行斷言的1個或多個空格,後面的字County超前電流匹配的存在。

RegEx Demo

如果你想避免超前,那麼你可以使用一個捕獲組:

(\w+)\s+County 

和提取捕獲組#1的比賽結果。

2

\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 demoenter image description here