首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Grep第一组regexp

Grep第一组regexp
EN

Stack Overflow用户
提问于 2014-08-30 20:29:49
回答 4查看 5.2K关注 0票数 4

是否有一种方法可以指定我想要追加到我的文件中的regexp组?在下面的示例中,我只想在我的文件中存储(\d{8})

代码语言:javascript
运行
复制
grep -P1 -o kamilla(\d{8}) >> whatever.txt
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-30 20:37:42

您将需要使用肯定的Lookbehind断言或替代方法,以使其不包含在匹配中。

正向后看

代码语言:javascript
运行
复制
grep -Poi '(?<=kamilla)\d{8}'

回顾性断言,在字符串中的当前位置,前面的是"kamilla“。如果断言成功,正则表达式引擎将匹配八位数。

\K 转义序列:

代码语言:javascript
运行
复制
grep -Poi 'kamilla\K\d{8}'

\K转义序列重置报告的匹配的起点。任何以前匹配的字符都不包含在最终匹配序列中。

  • -o选项只显示匹配模式的部分。
票数 9
EN

Stack Overflow用户

发布于 2014-08-30 20:37:34

您可以使用-o开关和\K,它移除匹配的前一部分:

代码语言:javascript
运行
复制
$ grep -Poi 'kamilla\K\d{8}' <<<"kamilla83222237"
83222237

当您使用Perl风格的正则表达式时,您也可以只使用Perl:

代码语言:javascript
运行
复制
$ perl -nE 'say $1 if /kamilla(\d{8})/' <<<"kamilla83222237"
83222237
票数 3
EN

Stack Overflow用户

发布于 2014-08-30 20:40:32

另一种方式是:

代码语言:javascript
运行
复制
$ grep -P -o '(?<=kamilla)\d{8}' <<< kamilla12345678
12345678
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25586484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档