正则表达式设置单词字符和匹配确切的单词

时间:2011-02-19 06:05:07

标签: c# regex

我需要我的C#正则表达式只匹配完整的单词,我需要确保+ - / *()分隔单词(我不确定最后一部分是否已经设置过。)我发现正则表达非常困惑,并希望得到一些帮助。 目前,我的正则表达式是:

public Regex codeFunctions = new Regex("draw_line|draw_rectangle|draw_circle");

谢谢! :)

2 个答案:

答案 0 :(得分:3)

尝试

public Regex codeFunctions = new Regex(@"\b(draw_line|draw_rectangle|draw_circle)\b");

\b表示匹配单词边界,即从非单词字符到单词字符的过渡(反​​之亦然)。

单词字符包括字母字符,数字和下划线符号。非单词字符包含其他所有内容,包括+-/*(),因此它应该适合您。

有关详细信息,请参阅Regex Class documentation

字符串开头的@使字符串为verbatim string,否则您必须键入两个反斜杠才能生成一个反斜杠。

答案 1 :(得分:0)

您想匹配任何字词,还是只匹配上面列出的字词?要匹配任意单词,请将其替换为创建Regex对象的位:

new Regex (@"\b(\w+)\b");

将来,如果您希望将更多字符视为空格(例如,下划线),我建议将String替换为空格字符。可能有一种聪明的方法可以使用正则表达式获得相同的效果,但我个人认为它太聪明了。 String.Replace版本很明显。

另外,我不禁建议您阅读正则表达式。是的,它们看起来像线路噪音,直到你习惯了它们,但是一旦你做到它们很方便,那里有很多很好的资源来帮助你。