この正規表現でレベル 1-Markdown 見出しを取得したい
/^\#[^\#]\s*(.+?)\s*\#*\n+/m
これは入力です:
##Invalid##
#Valid#
##Invalid
#Valid
私はこれを期待しています:Valid
しかし、私はこれを取得します: alid
. 私の正規表現の何が問題になっていますか?
この正規表現でレベル 1-Markdown 見出しを取得したい
/^\#[^\#]\s*(.+?)\s*\#*\n+/m
これは入力です:
##Invalid##
#Valid#
##Invalid
#Valid
私はこれを期待しています:Valid
しかし、私はこれを取得します: alid
. 私の正規表現の何が問題になっていますか?
この正規表現はどうですか:
^#([^#]*)#?$
スペースを取り除きたい場合:
^#\s*([^#]*?)\s*#?$
OR Mapper[^\#]
が を盗んでいると述べたV
ように、代わりに次のようなものを使用できます。
(^|[^#])#\s*([^#]+?)\s*(#($|\r?\n)|($|\r?\n))
グループ 2 には内部テキストが含まれます。
[^\#]
ではない文字を 1 つ食べ#
ます。あなたの場合、それがあなたのV
性格です。
正規表現エンジンが先読みをサポートしている場合、おそらくそれを使用して、イニシャルの後の次の文字#
が空白になるかどうかを判断できます (認識された見出しテキストに含めないでください。または a 以外のものを#
含めないでください (認識された見出しテキストに含めてください))。
それ以外の場合、おそらくより簡単な方法は、キャプチャ グループに空白を含め、ホスト言語で後で文字列をトリミングすることです。
/^\#((?:\s|[^\#]).*?)\s*\#*\n+/m
#
これにより、空白または非ハッシュ記号 (どちらもキャプチャ グループに含まれる) が検出されるとすぐに、最初の一連の記号が終了したと見なされます。(?:)
(内部の非キャプチャ グループの構文を使用していることに注意してください。これは、特定の正規表現エンジンでは異なるように見える可能性があります)。内部テキストの残りの文字は、式のように収集されます。