请问,正则表达式的“|”

dfsr23 2012-05-28 07:52:56
正则表达式的“|”元字符,分两边,是凭什么规则分的,比如
string regx = (.*)小张|小李;

“|”符号右边我知道是“小李”,左边呢?是小张,还是(.*)小张,是在哪两部分取或?
规则是怎么样的?
...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
-过客- 2012-05-28
  • 打赏
  • 举报
回复
好久没看自己写的东西了,忽然发现分支结构还有些内容是需要交待的

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

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

参考

正则表达式学习参考
中的
2.2.7 分支结构(Alternation)


-过客- 2012-05-28
  • 打赏
  • 举报
回复
当一个字符串的某一子串具有多种可能时,采用分支结构来匹配,“|”表示多个子表达式之间“或”的关系,“|”是以()限定范围的,如果在“|”的左右两侧没有()来限定范围,那么它的作用范围即为“|”左右两侧整体。

你这个问题就是左边为(.*)小张

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧