Markdownの脚注の正規表現

Markdownの脚注の正規表現

印刷用のMarkdown文書とEPUBファイルを準備しています。 EPUBファイルから単語定義脚注を削除したいです。

削除する脚注の形式は、すべての英数字文字セット(他の文字を含む)にする[mean-X]ことができます。X-

私は試した:

grep -o "\[\^mean-.*\]"

結果の例:

[^mean-vicissitudes]
[^mean-immortality]
[^mean-ingot]
[^mean-remonstrance]
[^mean-libeller]
[^mean-debauched] and the most amorous[^mean-amorous]
[^mean-turpitude]
[^mean-debauched] drunken, licentious,[^mean-licentious]
[^mean-frivolous]
[^mean-despots]
[^mean-repentance]
[^mean-ignominy]
[^mean-vain]
[^mean-presumptuousness] haughtiness,[^mean-haughtiness]

同じ行に複数の脚注が表示されると、正規表現は最後の項目に展開されます]

私も次のことを試しました。

  1. grep -o "\[\^mean-.*\][^\[]"それでもオリジナルと同じ場合があり、最後のケースの後にコンマとコロンをキャプチャします]

  2. grep -o "\[\{1\}\^mean-.*\]"しかし、それは問題を解決しません。私はそれがただ1つのインスタンスをキャプチャすると思います[

  3. grep -o "\[\^mean-.*\]\{1\}"しかし、それも問題を解決しません。私はそれがただ1つのインスタンスをキャプチャすると思います]

grepを使用して脚注をキャプチャして削除する方法(スペースに置き換える代わりに、代わりに)削除するそれらを)か。

PS Windows用のGit Bashを使用していますが、コマンドは同じようです。

答え1

問題は.*それを表現する方法、つまり「欲」です。これにより、式は行]の最後の部分まで]行の残りの部分と一致します。代わりに、表現のこの部分をあなたが直接可能であると言うこと、つまり英数字の合計と一致するようにしてください-。英数字が一致し、[[:alnum:]]括弧[[:alnum:]-]内の式がダッシュとも一致するようにします。

\[\^mean-[[:alnum:]-]*\]

質問のデータに対して以下を実行します。

$ grep -o '\[\^mean-[[:alnum:]-]*\]' file
[^mean-vicissitudes]
[^mean-immortality]
[^mean-ingot]
[^mean-remonstrance]
[^mean-libeller]
[^mean-debauched]
[^mean-amorous]
[^mean-turpitude]
[^mean-debauched]
[^mean-licentious]
[^mean-frivolous]
[^mean-despots]
[^mean-repentance]
[^mean-ignominy]
[^mean-vain]
[^mean-presumptuousness]
[^mean-haughtiness]

あなたのgrep命令は明らかにタブレット一致しますが、削除しません。これを行うには、sed編集スクリプトを使用します。

$ sed 's/\[\^mean-[[:alnum:]-]*\]//g' file





 and the most amorous

 drunken, licentious,





 haughtiness,

空行を追加し、初期スペースを削除します。

$ sed 's/\[\^mean-[[:alnum:]-]*\]//g; /^[[:blank:]]*$/d; s/^[[:blank:]]*//' file
and the most amorous
drunken, licentious,
haughtiness,

または[^mean-...]

sed '/\[\^mean-[[:alnum:]-]*\]/{ s///g; /^[[:blank:]]*$/d; s/^[[:blank:]]*//; }' file

関連情報