17
Apr

正则表达式的一个小问题


版权声明:可以在网上任意转载,转载时请务必以超链接形式标明文章原始出处、作者信息及本声明文字。
作者:shunz,出处:http://shunz.net/2007/04/regexp.html

写程序时出现一个正则表达式的问题,如何让正则表达式最小匹配,如:

规则:”abc(.+)cde”

字符串:”abcasdfascdedadadfaabceqewrqcdedfa”

如何让他匹配得到两个字符串: abcasdfascde和abceqewrqcde,而不是abcasdfascdedadadfaabceqewrqcde一个字符串呢?

在Google上找了好久都没找到,最后是istef帮忙解决了:

规则写为: “abc(.+?)cde”

原因: .+ .* 都是贪婪的 .+? .*? 可以让他们不贪婪

另一个问题,请高手帮忙解决:

“ada(\(aafag)asdfa(dfa\(d\))”要匹配成(\(aafag)和(dfa\(d\)),规则该如何写?也就是找到(),但是胡略\(\)的规则

2 条评论了已经

发表评论

名字(必须)
邮箱(不会被公布)(必须)
网址

字体为 粗体 是必填项目,邮箱地址 永远不会 公布。

允许部分 HTML 代码:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URIs must be fully qualified (eg: http://shunz.net/) and all tags must be properly closed.

超出部分系统将会自动分段及换行。

请保证评论内容是与日志或 Blog 内容相关的,灌水、攻击性或不恰当的评论 may 会被编辑或删除。

    关于

      我,shunz,在这里默默记录自己的所学所思以及所关注的事情...
      Blog del.icio.us Flickr Furl Gmail/Google Talk Google Reader Google Shared Stuff Picasa Web Albums Twitter YouTube Zooomr douban

    订阅

    页面

    广告

    分类