2009-01-05 75 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的文档。

至于消毒输入,没有任何输入可以“破坏”正则表达式。它可能会阻止比赛,但这真的有点正则表达式是一回事,不是吗?

相关问题