我需要我的C#正则表达式只匹配完整的单词,我需要确保+ - / *()分隔单词(我不确定最后一部分是否已经设置过。)我发现正则表达非常困惑,并希望得到一些帮助。 目前,我的正则表达式是:
public Regex codeFunctions = new Regex("draw_line|draw_rectangle|draw_circle");
谢谢! :)
答案 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版本很明显。
另外,我不禁建议您阅读正则表达式。是的,它们看起来像线路噪音,直到你习惯了它们,但是一旦你做到它们很方便,那里有很多很好的资源来帮助你。