awk '{if(match($0,"houbank_(.*?)\\.(.*?)",m)){print m[0]}}'
前面if是匹配所有列有houbank_的字符串,第一个括号是先匹配.任意字符*号贪婪模式匹配所有,?又是懒惰模式是不是匹配\斜杠就停止,\\.开始怎么又开始匹配,那个m是什么意思?print m[0]是什么意思,难道是像python一样取列表第一个字符?请大家帮忙解读一下意思谢谢
求助正则表达式理解问题
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
- astolia
- 论坛版主
- 帖子: 6570
- 注册时间: 2008-09-18 13:11
Re: 求助正则表达式理解问题
遇事不决查手册
代码: 全选
man -P cat awk | sed -n '/match(s/,/^$/p'
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
- astolia
- 论坛版主
- 帖子: 6570
- 注册时间: 2008-09-18 13:11
Re: 求助正则表达式理解问题
我以前不是给你说过要去学《正则表达式30分钟入门教程》吗?你的疑问里面基本都有答案
还有\\.这个,你用的是字符串"",所以\\在字符串中就表示是字符\(反斜杠),然后\.在正则表达式里代表字符.(点)
如果不用字符串,直接用正则的语法,就是match($0,/houbank_(.*?)\.(.*?)/,m)
《正则表达式30分钟入门教程》里“贪婪与懒惰”已经讲得非常清楚了。如果你记忆模糊了,再去仔细读一遍 https://deerchao.cn/tutorials/regex/reg ... edyandlazy
还有\\.这个,你用的是字符串"",所以\\在字符串中就表示是字符\(反斜杠),然后\.在正则表达式里代表字符.(点)
如果不用字符串,直接用正则的语法,就是match($0,/houbank_(.*?)\.(.*?)/,m)
m就是一个包含分组结果的数组。print m[0]就是输出数组中的0号成员。
0号成员就是文本中匹配整个正则式的那一部分The 0'th element of a contains the portion of s matched by the entire regular expression r.
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
Re: 求助正则表达式理解问题
谢谢版主指导,那个正则表达式我看了,有些地方没有理解透,我再去加深加深astolia 写了: ↑2020-04-28 16:10 我以前不是给你说过要去学《正则表达式30分钟入门教程》吗?你的疑问里面基本都有答案
《正则表达式30分钟入门教程》里“贪婪与懒惰”已经讲得非常清楚了。如果你记忆模糊了,再去仔细读一遍 https://deerchao.cn/tutorials/regex/reg ... edyandlazy
还有\\.这个,你用的是字符串"",所以\\在字符串中就表示是字符\(反斜杠),然后\.在正则表达式里代表字符.(点)
如果不用字符串,直接用正则的语法,就是match($0,/houbank_(.*?)\.(.*?)/,m)
m就是一个包含分组结果的数组。print m[0]就是输出数组中的0号成员。0号成员就是文本中匹配整个正则式的那一部分The 0'th element of a contains the portion of s matched by the entire regular expression r.