我想出了以下正则表达式:
\[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
成功并仅返回整个输入。
我可能在这里错过了一些简单的东西,但不确定是什么。