2017-08-10 12 views
1

マークダウンタグの内容と一致させたいが、文字列に複数の等しいタグがある場合は問題がある。終了マークダウンタグまですべてを一致させる

match1: "[caixa]text here[/caixa]"

match2: "[caixa] text [/caixa]"

私が試した:私が欲しいのは、この場合になり、(タグ自体を含む)タグ超える反復は

string = "[caixa]text here[/caixa] more text [caixa] text [/caixa]"

です\[caixa\].+(?<!\[\/caixa\])\[\/caixa\]のような否定先読みが、最初の開始タグから最後の終了タグまでのテキスト全体と一致します。

私はPythonでreライブラリを使用しています。どんな助けもありがとうございます。

+1

用途: 'R」 \ [caixa \]。+?\ [/ caixa \] ''' re.findall'で – anubhava

+1

うまくいきました、tyvm – arop

答えて

1

ルックバックやルックアヘッドは必要ありません。あなたのタグがネストされていないなら、あなたは、この正規表現で怠惰な数量詞マッチングを使用することができます。

\[caixa\].+?\[/caixa\] 

正規表現の分裂を

\[caixa\] # match starting tag "[caixa]" 
.+?   # match one or more of any characters (lazy match) 
\[/caixa\] # match closing tag "[/caixa]" 

コード:

>>> string = "[caixa]text here[/caixa] more text [caixa] text [/caixa]" 
>>> print re.findall(r'\[caixa\].+?\[/caixa\]', string) 
['[caixa]text here[/caixa]', '[caixa] text [/caixa]'] 
関連する問題