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