Chinaunix

标题: 关于awk正则表达式 [打印本页]

作者: silentfly1987    时间: 2014-04-10 15:42
标题: 关于awk正则表达式
执行语句:awk 'BEGIN{str="98号301。99999999aaa"; str1=gensub(/(.*)([0-9]+)(aaa)/, "\\1", "g", str); print str1}'

运行结果:98号301。9999999

问题:
1)为什么结果不是“98号301。”?  
2)为什么\d不能用?
作者: ly5066113    时间: 2014-04-10 15:44
回复 1# silentfly1987


正则表达式是贪婪的。
作者: jason680    时间: 2014-04-10 15:54
回复 1# silentfly1987

$ awk 'BEGIN{str="98号301。99999999aaa"; str1=gensub(/(.*)([0-9]+)(aaa)/, "*\\1*\\2*\\3", "g", str); print str1}'
*98号301。9999999*9*aaa

$ awk 'BEGIN{str="98号301。99999999aaa"; str1=gensub(/(.*[^0-9])([0-9]+)(aaa)/, "*\\1*\\2*\\3", "g", str); print str1}'
*98号301。*99999999*aaa

   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2