日期:2014-05-18  浏览次数:20911 次

请问,正则表达式的“|”
正则表达式的“|”元字符,分两边,是凭什么规则分的,比如
string regx = (.*)小张|小李;

“|”符号右边我知道是“小李”,左边呢?是小张,还是(.*)小张,是在哪两部分取或?
规则是怎么样的?

------解决方案--------------------
好久没看自己写的东西了,忽然发现分支结构还有些内容是需要交待的

other1a1|a2|a3other2 由于没有()限制,"|"的作用范围即为左右两侧整体,也就是other1a1,a2,a3other2这三个分支
other1(a1|a2|a3)other 由于有()限制,"|"的作用范围在()内,也就是a1,a2,a3这三个分支,other1和other2不在这个分支结构作用范围内

分支结构尝试匹配的顺序是从左往右的,当遇到一个分支匹配成功后,就不再向右尝试,所以如果使用时遇到包含与被包含关系时,被包含的应该放在左边,否则将永远匹配不到
(\w+|\d+) 由于\w是包含\d的,所以\d+这个分支,将永远匹配不到