如何使用RegEx匹配C#中的字符串列表?

时间:2009-01-05 21:06:49

标签: c# regex

我需要从字符串列表中找到所有正则表达式匹配项。例如,我需要能够获取字符串“This foo is foobar”并匹配“foo”或“bar”的任何实例。这个正确的模式是什么?另外,我需要做什么输入卫生来防止输入的文本破坏模式?

1 个答案:

答案 0 :(得分: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上的文档。

至于清理输入,没有输入会“破坏”正则表达式。它可能会阻止匹配,但这真的有点像正则表达式,不是吗?