2017-07-19 84 views
0

我試圖捕獲.txt文檔中的每個單詞。在C#中涉及撇號的正則表達式的問題

單詞被定義爲可能有撇號(由於輸入能夠使用任一字符而被俘獲的撇號和「右單引號」字符)的任何不間斷字符和連字符串,或者作爲正則表達式:

[a-zA-Z\-]+['a-zA-Z\-\’\']* 

現在,這似乎是在幾個網上正則表達式測試web應用程序thingos工作,但它只是似乎並不想在我的C#代碼工作,我不明白爲什麼:

MatchCollection matches = Regex.Matches(input_String.ToLowerInvariant(), 
             @"[a-zA-Z\-]+['a-zA-Z\-\’\']*"); 
string[] sorting_String = matches.Cast<Match>().Select(match => match.Value).ToArray(); 

當我和rd像「我是」包含在文本中,它將單詞「i」和「m」作爲單獨的單詞返回,而不是單個條目「i'm」。

這次我沒有發現谷歌搜索的任何內容,因爲它能夠在網上測試人員中按照預期工作......而且我無法弄清楚它是否是逃避問題......我很難過。

有人可以向我解釋爲什麼它沒有返回我期望的C#?或者至少,與System.Text.RegularExpressions庫?我認爲這只是我愚蠢/無知。

編輯1:這裏是當地人顯示的問題的屏幕截圖 - Image of Locals 它應該是「書」。 咦,我剛纔檢查我的輸入字符串變量,它看起來像我得到的東西是這樣的:Image of encoding issue? maybe?

Ehhhh,輸入的是一個txt文件 - 和它的格式被保留在文件中...所以在我的代碼中發生了一些不好的事......至少,呃,這就是我現在猜測問題的地方......我不是這個XD的專家。對不起,我很煩惱,但是我能指出一些可以幫助我的資源嗎?

+2

嘗試刪除'「@」'。 –

+1

[我無法重現問題](http://ideone.com/dSDvY4)。此外,更好的模式可以是'[a-zA-Z] +(?:['' - ] [a-zA-Z] +)*'或甚至'\ p {L} +(?:['' - ] \ p {L} +)*'。 –

+0

@MichałTurczyn我的第一個想法,但沒有@它甚至不是一個合法的字符串文字。 @在這裏是正確的。 –

回答

1

你可以試試這個[\w\'\-]+[\w\'\-]*,看看它是否工作

我想你應該逃脫第二支架的第一'