「タグ」が仕様に従って適切に再フォーマットされることを保証する正規表現を作成しようとしています。(私はたくさんのレガシーなものを更新しています。)
()
一般的な考え方として、タグは または のいずれかに括弧で囲まれたコンテンツを含めることができます[]
。ただし、既存のタグの形式が正しくない可能性があります。
- 良い :
Sample (sample)
Sample [sample]
- 悪い :
Sample (( sample )
Sample [(sample]]
現在、これを一連の正規表現で処理していますが、技術的に単一の正規表現で行うことができるかどうか疑問に思っています。
コードの簡略化されたバージョンでは...
RE_tag_collapse = re.compile(\
"""
([\[\(])+ ### opening bracket
\s*
( # the contents
[^\]\)]+
)
\s*
([\]\)])* # closing bracket
"""
,
re.I | re.VERBOSE
)
edited= re.sub( RE_tag_collapse , r'\1\2\1' , tag )
この正規表現の問題は、終了タグ (2 番目の\1
) が開始タグと同じであることです。
私がやりたいことは、開始タグの逆になるように終了タグをマップすることです:
(
に反転します)
[
に反転します]
これが簡単に実現できるかどうかは誰にもわかりませんか?私の最善の解決策は、そのままにして複数の正規表現を使用することです。