Grep第一组正则表达式

Dyn*_*ite 1 regex vim bash

有没有办法指定我要附加到文件的正则表达式组?在下面的示例中,我只想存储(\d{8})在文件中:

grep -P1 -o kamilla(\d{8}) >> whatever.txt
Run Code Online (Sandbox Code Playgroud)

hwn*_*wnd 5

您将需要使用正向隐式断言或替代方法,以使其不包含在比赛中。

正向后看

grep -Poi '(?<=kamilla)\d{8}'
Run Code Online (Sandbox Code Playgroud)

从后面看可以断言,在字符串的当前位置,前面是“ kamilla”。如果断言成功,则正则表达式引擎将匹配八位数字。

备用\K转义序列:

grep -Poi 'kamilla\K\d{8}'
Run Code Online (Sandbox Code Playgroud)

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

  • -o 选项仅显示与模式匹配的匹配部分。