C#正则表达式匹配单词

问题描述:

C#正则表达式匹配单词
我的目的是匹配以w开头的单词,且单词里不能包含数字,但奇怪的是为什么最后一个单词“were_rwe”没有匹配到?但只要把那个下划线去掉就可以匹配到,为什么?\w不是表示字母、下划线或汉字么,或者我的表达式没有写对?
1个回答 分类:综合 2014-11-06

问题解答:

我来补答
\w是字母数字或下划线,这是最基本会包含的,在有些编程语言以及使用中文的系统下,可能会匹配汉字,C#是其中一种.总结一下,在C#中\w表示字母数字下划线以及汉字.
你的正则不对是因为你对小括号理解的不对.导致w字符后面必须跟着偶数个字符才能匹配.
(\w\D)你其实是想写成(\w|\D)或者[\w\D]吧?
\D是任意非数字,包括字母符号汉字以及其他任何非数字的字符,\w和\D加在一起,其实就是任何字符了.比.还多匹配空白字符呢.
你应该用\bw\D+?\b
再问: 你好,我再问下\bw\D+?\b中的+?放在一起,是起什么作用呢?
再答: 非贪婪,在正则匹配成功的情况下,匹配尽可能少的前面的元素。 算是比较“高深”的特性了,与贪婪匹配相对。其实这些我建议你找个正则入门的教程跟着看,简单几句总归是说不透。 http://blog.csdn.net/phker/article/details/4565740 http://blog.csdn.net/lxcnn/article/details/4756030
 
 
展开全文阅读
剩余:2000