起因:一朋友qq问 :匹配一个字符串 以 [#开头,以#] 结束,谁知道该怎么写,谢谢 经过:我很不自量力的自己试了下,因为我不会正则,只知道\d 等简单的。看了@deerchao 大大的30分钟入门。写了个
[#\w[\u4e00-\u9fa5]#]|[#[\u4e00-\u9fa5]\w#]
这玩意明显不能全匹配,可以说是错的,继续往下看文章,看到零宽断言和反义就有了下面版本
(?<=[#).(?=#]) (这个是笤帚大写的,我以前也写了这样的,但是在这里测试没结果http://tool.oschina.net/regex ,于是跑去群里问笤帚大给出了如上答案)。这个可以说是完美达到目标,只是贪婪匹配没考虑 [# #] #], [# [ # #]#] 等等情况
我又去请教了正则小王子@selaselah 给出如下答案
([#[^#]#]) (反义+捕获)特殊情况不考虑
结果:回问朋友对特殊情况,未答复。。。无语。此事就罢了。上述两种方法都能满足一般情况。特殊情况就用正则小王子的方法: 程序+正则 仅凭正则不能满足