2009-01-05 108 views
1

我需要從字符串列表中找到所有正則表達式匹配。例如,我需要能夠接受字符串「This foo is a foobar」並匹配「foo」或「bar」的任何實例。這個正確的模式會是什麼?另外,我需要做什麼輸入衛生來防止輸入的文本打破模式?如何使用RegEx來匹配C#中的字符串列表?

+0

對不起,如果這不是一個真正的答案,但我會推薦你​​免費的工具[Expresso] [1] ..它使正則表達式開發更容易像你的情況。 [1]:http://www.ultrapico.com/Expresso.htm – rodbv 2009-01-05 21:17:53

+1

如果您瞭解正則表達式的基礎知識,則正則表達式工具最有用。也許這個問題寫得不好,但看起來OP完全不熟悉Regex。匹配(foo | bar)是正則表達式101. – abelenky 2009-01-05 21:34:00

回答

4

我有點不確定你的實際問題是什麼。要匹配「foo」或「bar」,您只需要"foo|bar"即可。如果你想這樣做一個字符串列表,你可能想要單獨檢查每個字符串 - 你可以加入字符串,並檢查,但我不知道這將是很有用的。如果要獲取與模式匹配的確切文本,則應該將模式括在括號中,例如"([fg]oo|[bt]ar)",它們將匹配「foo」,「goo」,「bar」或「tar」 - 然後使用Groups屬性的Match對象來檢索這些捕獲,所以你可以確定究竟哪個詞匹配。 Groups[1]是第一個捕獲值(即模式中第一組括號中的值)。 Groups[0]是整場比賽。您還可以命名您的捕獲 - "(?<word>[fg]oo|[bt]ar)" - 並通過名稱引用它們 - Groups["word"]。我會建議閱讀regular expression language elements的文檔。

至於消毒輸入,沒有任何輸入可以「破壞」正則表達式。它可能會阻止比賽,但這真的有點正則表達式是一回事,不是嗎?

相關問題