2011-02-19 85 views
1

我需要我的C#正则表达式只匹配完整的单词,我需要确保+ -/*()分隔单词以及(我不确定最后一部分是已经设置了这种方式。)我发现正则表达式非常混乱,并希望在这件事上得到一些帮助。我的正则表达式是:正则表达式设置单词字符和匹配确切的单词

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

谢谢! :)

回答

3

尝试

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

\b装置匹配字边界,即从非字字符到字字符(或反之亦然)的过渡。

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

查看Regex Class documentation了解更多详情。

@字符串的开始,使字符串verbatim string,否则你必须键入两个反斜杠,使一个反斜杠。

+0

它似乎不匹配任何东西 – pajm 2011-02-19 06:12:21

0

你想匹配任何单词,或只是上面列出的单词吗?如果你想要更多的字符被视为空白(例如,下划线),我会建议字符串

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

在未来,:要匹配这样的任意单词,替代这次为创建正则表达式对象位。将它们替换为空格字符。用正则表达式获得相同效果可能有一个聪明的办法,但我个人认为这太聪明了。 String.Replace版本很明显。

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

相关问题