从命令行命名捕获组

时间:2019-07-01 07:09:51

标签: regex bash macos shell perl

我想出了以下正则表达式:

\[release(\s+(?<release_type>.*))?\]\n+(?<release_notes>.*)

这个想法是为几个参数解析一个提交消息:

[release minor]

Hello world

- asd
- zxc

匹配将产生release_type = 'minor'release_notes = 'Hello world\n…

由于macOS中的旧正则表达式引擎,我试图使用perl。

我尝试过:

perl -ne 'print "$+{release_notes}" while /\[release(\s+(?<release_type>.*))?\]\n+(?<release_notes>.*)/gs;' msg.txt

但是由于某种原因,该表达式无法正常工作。

实际上,甚至更简单

perl -ne 'print "$+{release_notes}" while /\n(?<release_notes>.*)/gs;' msg.txt 

失败。

perl -ne 'print "$+{release_notes}" while /(?<release_notes>.*)/gs;' msg.txt 

成功并仅返回整个输入。

我可能在这里错过了一些简单的东西,但不确定是什么。

0 个答案:

没有答案