社区
C#
帖子详情
正则"|"操作符
windboyzsj
2009-10-26 12:21:22
你们猜猜下面打印出来的是什么?
Console.WriteLine(Regex.Match("abcaa", "(bc(?<name>.*))|(ab(?<name>.*))").Groups["name"].Value);
结果是"caa"
MSDN上说"|"会返回左边的结果,为什么这里是右边的呢?这个两个分支单独匹配都成功。
...全文
96
1
打赏
收藏
正则"|"操作符
你们猜猜下面打印出来的是什么? Console.WriteLine(Regex.Match("abcaa", "(bc(?.*))|(ab(?.*))").Groups["name"].Value); 结果是"caa" MSDN上说"|"会返回左边的结果,为什么这里是右边的呢?这个两个分支单独匹配都成功。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
-过客-
2009-10-26
打赏
举报
回复
分析匹配过程就是了
从位置0处开始尝试匹配,首先由左侧表达式
(bc(?<name>.*))
尝试匹配,由“b”匹配“a”,匹配失败,左侧表达式匹配失败
此时尝试下一个分支,也就是右侧表达式
(ab(?<name>.*))
尝试匹配,由“a”匹配“a”,匹配成功,继续尝试匹配,右侧表达式匹配成功,此时的name捕获组匹配到的就是“caa”
我没看过MSDN上关于这一部分的介绍,但这里说的返回左边结果,应该是成功匹配的最左边的结果,如果左侧分支不能成功匹配,自然是向右侧分支尝试的。自左向右尝试匹配,逐个分支尝试,只要有一个分支匹配成功,就不再向右尝试匹配,这是传统NFA引擎的特点
这两个分支单独匹配都能成功,但要看是在哪个位置,在位置0处,自然是右侧分支匹配成功,而左侧分支匹配失败了
PS:基本上不怎么看MSDN上关于正则的介绍,因为不太习惯看大篇的英文,中文关于正则这一部分翻译得几乎没法看,太乱了,名词跟绕口令一样。。。
正则
表达式教程之
操作符
及说明详解
主要介绍了
正则
表达式教程之
操作符
及说明,详细分析了
正则
表达式中常见
操作符
及相应的功能,需要的朋友可以参考下
正则
表达式(regex)或
操作符
”|“使用易出现功能Bug|angluo-re-132552.pdf
主要介绍了
正则
表达式(regex)或
操作符
”|“使用易出现功能Bug,需要的朋友可以参考下
带你学会使用
正则
表达式
内容简介:
正则
表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE)。计算机科学的一个概念。
正则
表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串...
正则
表达式常用
操作符
正则
表达式常用
操作符
常用典型事例 常用 ^ 匹配字符串开头 ^abc表示abc且在一个字符串的开头 $ 匹配字符串结尾 abc$表示abc且在一个字符串的结尾 ( ) 分组标记,内部只能使用 |
操作符
(abc)表示abc,(abc|def)表示 ...
Python
正则
表达式常用
操作符
正则
表达式的常用
操作符
操作符
说明 实例 . 表示任何单个字符 [ ] 字符集,对单个字符给出取值范围 [abc] 表示a、b、c,[a-z] 表示a到z的单个字符 [^ ] 非字符集,对单个字符给出排除范围 [^ab] 表示非...
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章