1

この正規表現でレベル 1-Markdown 見出しを取得したい

/^\#[^\#]\s*(.+?)\s*\#*\n+/m

これは入力です:

##Invalid##

#Valid#

##Invalid

#Valid

私はこれを期待しています:Validしかし、私はこれを取得します: alid. 私の正規表現の何が問題になっていますか?

4

4 に答える 4

0

この正規表現はどうですか:

^#([^#]*)#?$

スペースを取り除きたい場合:

^#\s*([^#]*?)\s*#?$
于 2013-08-09T14:20:24.243 に答える
0

OR Mapper[^\#]が を盗んでいると述べたVように、代わりに次のようなものを使用できます。

(^|[^#])#\s*([^#]+?)\s*(#($|\r?\n)|($|\r?\n))

グループ 2 には内部テキストが含まれます。

正規表現

于 2013-08-09T14:18:55.290 に答える
0

[^\#]ではない文字を 1 つ食べ#ます。あなたの場合、それがあなたのV性格です。

正規表現エンジンが先読みをサポートしている場合、おそらくそれを使用して、イニシャルの後の次の文字#が空白になるかどうかを判断できます (認識された見出しテキストに含めないでください。または a 以外のものを#含めないでください (認識された見出しテキストに含めてください))。

それ以外の場合、おそらくより簡単な方法は、キャプチャ グループに空白を含め、ホスト言語で後で文字列をトリミングすることです。

/^\#((?:\s|[^\#]).*?)\s*\#*\n+/m

#これにより、空白または非ハッシュ記号 (どちらもキャプチャ グループに含まれる) が検出されるとすぐに、最初の一連の記号が終了したと見なされます。(?:)(内部の非キャプチャ グループの構文を使用していることに注意してください。これは、特定の正規表現エンジンでは異なるように見える可能性があります)。内部テキストの残りの文字は、式のように収集されます。

于 2013-08-09T14:15:36.653 に答える