を使用して、文字列に複数の引数をマッチング:は、私は、次のしていることを文字列とし、正規表現
mystr = """
<p>Some text and another text. </p> ![image_file_1][image_desc_1] some other text.
<p>some text</p>
![image_file_2][image_desc_2] and image: ![image_file_3][image_desc_3]
test case 1: ![dont_match_1]
test case 2: [dont_match_2][dont_match_3]
finally: ![image_file_4][image_desc_4]
"""
は私が得ることができるがimage_file_X
年代次のコードを使用して:私はimage_desc_X
キャプチャしたい
import re
re.findall('(?<=!\[)[^]]+(?=\]\[.*?\])', mystr)
年代を以下は動作しません:
re.findall('(?!\[.*?\]\[)[^]]+(?=\])', mystr)
お勧めはありますか?私がimage_file
とimage_desc
の両方を得ることができれば、もっと良いだろう1つのコマンドを使うことができます。
'の存在を表現する!'正の後読みをする必要はありません。リテラル '!'で十分です。 – revo