首页 新闻 会员 周边

c# 一个正则表达式的理解

0
悬赏园豆:50 [已解决问题] 解决于 2014-08-13 14:33

各位,下面的正则表达式意思是找出一段话中{}中的字符,

比如这句话:

你说的: {daYCUTOFF(<ETDWT>,5)} 10:00 (什么都可以)

截止时间: {daYCUTOFF(<ETDWT>,4)} 15:00

 

出来的结果是这样的

True 123 20 daYCUTOFF(<ETDWT>,5)
True 207 20 daYCUTOFF(<ETDWT>,4)

(?<=[[{]+)[^]}]+

 

可以分析下怎么理解吗?谢谢!

五月℃夏到了的主页 五月℃夏到了 | 初学一级 | 园豆:17
提问于:2014-08-08 15:02
< >
分享
最佳答案
1

(?<=[[{]+)[^]}]+  改成下面这样也可以。 

1:    (?<=[{]+)[^}]+ 

2:    (?<=[{]+)        [^}]+      分为这两部分看。

3:   非贪婪匹配,前面部分匹配以“{”开始,后面匹配以“}”结束。取中间的字符 

收获园豆:50
Echo.Liu | 菜鸟二级 |园豆:385 | 2014-08-08 15:20

为什么用到中括号呢?[{]  问号在最前面是什么意思呢

 

五月℃夏到了 | 园豆:17 (初学一级) | 2014-08-08 15:33

@五月℃夏到了: (?<=[{]+)是反向肯定预查。你可以理解为必须由"{"开始,但是不包括这个“{”

Echo.Liu | 园豆:385 (菜鸟二级) | 2014-08-08 15:39

@五月℃夏到了: 中括号[ ] 表示字符集合,这里的[{]就表示这个位置的字符必须是“{”

Echo.Liu | 园豆:385 (菜鸟二级) | 2014-08-08 15:40

@Mr.LiuP: 谢谢不过听不懂呀 尤其是?<=这个没有见过

五月℃夏到了 | 园豆:17 (初学一级) | 2014-08-08 15:41

@五月℃夏到了: 

互相学习,Jimmy Zhang的《正则表达式 教程》推荐给你。

http://www.cnblogs.com/JimmyZhang/archive/2007/10/24/936151.html

Echo.Liu | 园豆:385 (菜鸟二级) | 2014-08-08 15:43

@五月℃夏到了: 对了,补充一句。

(?<=[[{]+)[^]}]+  

“下面的正则表达式意思是找出一段话中{}中的字符”实际上是匹配{}中间和[]中间的

Echo.Liu | 园豆:385 (菜鸟二级) | 2014-08-08 15:48
其他回答(1)
0

我感觉这个正则写的太复杂了。。正则需根据实际情况可以变简单或变复杂。

简单点: {[^}]+}   这个断言“(?<=”,在实际中我很少用。一般在一个内容中匹配多个相同内容,且这些内容有部分关键匹配内容既被上一个使用又被下一个使用时。才会用....

像正则这么生僻,且不是经常使用的,我觉得没必要一下子全搞明白,只要知道有这个功能,在实际使用时才能体会深刻。

我叫宋 | 园豆:171 (初学一级) | 2014-08-09 19:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册