2013-01-25 61 views
0

我只對正則表達式有一些基本的瞭解。我的意圖是捕捉word文檔中的每一個單詞,爲此我設計了這個正則表達式。我的單詞文件由數字寫成像Rs.1,00,000/- 還包含像57.58寫的小數。它還將包含對由F.No.245/12-445/235編寫的文件的引用,而不以空格分隔。正則表達式來清除由空格分隔的文本文件中的所有單詞

這幾乎是成功的,下面的正則表達式

(Rs\.)?((\d{1,2}[\,])?)+(\d{3}\/\-)|([']?[\(]?[A-Za-z0-9][']?[-]?[?]?[!]?[:]?[-]?[.]?[/]?[\.]?[\(]?[\)]?[\(]?[\)]?[\/]?)+ 

爲了從Word文檔捕獲我剪的話,並粘貼到一個文本文件,這是受然後通過C#程序讀取。我的問題是,我從來不希望出現在詞尾的句點或點。如果結尾的詞後面跟着感嘆號或問號,這一切都可以。當我測試它時,它從文本文件中捕獲了13150個單詞,而單詞文檔顯示有13158個單詞。

+1

不用你什麼,只是匹配非空白字符,如'\ S +'正則表達式? – sp00m

+0

哦。非常感謝你。我調整了你的回覆。我剛剛嘗試過([A-z0-9,。/ - : - ;?] +),並發現它非常好。我將在後面更詳細地檢查它,因爲我現在身體很不舒服。 – Unnikrishnan

+0

哦。非常感謝你。我調整了你的回覆。我剛剛嘗試過([']?[A-z0-9,。/ - : - ;?'] +),並發現它非常好。我將在後面更詳細地檢查它,因爲我現在身體很不舒服。 Unnikrishnan – Unnikrishnan

回答

0

你要非空白字符,其次無論是空格或「F.No.」:

\S*?(?=\s|(F\.No\.)) 
+0

Oh.Great。期待一個小小的障礙。但是與正則表達式的簡單性相比,這沒什麼。我咬住它。在我的原始文章中,我沒有說過我想要捕獲\ S。我想單獨捕捉每個單詞。我用你的表達,然後從得到的結果中刪除所有這些\ S案例。它與我用自己的Regex得到的最終結果完全吻合([']?[A-z0-9,。''/ - : - ;''&!?\。\ * \(\)\/\ 「] +)。但是你的Regex向我展示了你的語言和Regex的專業知識。非常感謝Bohemian和sp00m。 Unnikrishnan – Unnikrishnan

+0

爲此目的最簡單的正則表達式絕對是sp00m。最後我嘗試了它,像\ b(\ S +)\ b。它抓住了測試文件中的幾乎所有單詞。非常感謝你。 Unnikrishnan。 – Unnikrishnan

+0

但\ b \ S \ b匹配「foo-bar」中的兩個單詞。 \ b匹配單詞到非單詞,而不是單詞到空白 – Bohemian

相關問題