私は次の正規表現を思いつきました:
\[release(\s+(?<release_type>.*))?\]\n+(?<release_notes>.*)
アイデアは、コミット メッセージを解析していくつかのパラメータを取得することです。
[release minor]
Hello world
- asd
- zxc
一致する結果はrelease_type = 'minor'
、になりますrelease_notes = 'Hello world\n…
。
macOS の正規表現エンジンが古いため、Perl を使用しようとしています。
私はもう試した:
perl -e '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
成功し、入力全体を返します。
おそらくここで何か単純なことを見逃しているのでしょうが、それが何なのかはわかりません。
答え1
この答え解決策を教えてください:-0777
コマンドに追加すると問題が解決します。
引用:
それはまだ必要です
-0777
を解除します入力レコードセパレータファイルはすぐに読み込まれます。 https://stackoverflow.com/questions/37582501/why-use-the-pn-in-slurp-mode-in-perl-one-liner/37583183#37583183