今天遇到一个问题:在C#中使用正则表达式"/w+"时,居然能匹配很多字符?
以下分析一下原因:
1、这样的匹配是“匹配一个字符串中的单个字符(match a single character in a string)”的,也就是说,如果第一个不能匹配,那么他还会继续查找其它字符。所以如果用于匹配类似于"(asdf"的字符串,自然是提示成功了。
2、如果想要实现特定匹配,还需要加^或$。^用于指定字符串的开始,$用于指定字符串的结束。称为行开始结束符(Start and End of the Line)。也就是说,用它限制了一行的开始与结束。"^/w+$"匹配类似于"w%%w"时就会提示错误,因为正则表达式要求这一行中所有的字符都是符合"/w"的。
3、很明显,"^/w+"仅要求匹配以"/w"开始,但无所谓结束字符的字符串,"/w$"正好相反。比如:"s!@#$%"与" &*(!@#$%^w "
以上几点都很简单。可以参阅一下:《Mastering Regular Expressions》