次の文字列には正規表現が必要です:
caption
"caption"
<caption>
[caption]
(caption)
etc
このコンテキストのキャプションは [a-zA-Z] です。のような同じシンボルに後方参照を使用できますが、、 、 など"
のペア シンボルはどうすればよいですか?()
[]
<>
次の文字列には正規表現が必要です:
caption
"caption"
<caption>
[caption]
(caption)
etc
このコンテキストのキャプションは [a-zA-Z] です。のような同じシンボルに後方参照を使用できますが、、 、 など"
のペア シンボルはどうすればよいですか?()
[]
<>
正規表現エンジンが条件をサポートしている場合に実行できます。
(?:(")|(<)|(\[)|(\())[A-Za-z]*(?(1)")(?(2)>)(?(3)\])(?(4)\))
@stemaまたは@Anirudhによって提案されたソリューションよりも読みやすいというわけではありません:)
説明:
(?: # Match either...
(") # a quote, capture it in group 1
| # or
(<) # an opening angle bracket --> group 2
| # or
(\[) # an opening bracket --> group 3
| # or
(\() # on opening parenthesis --> group 4
) # End of alternation
[A-Za-z]* # Match any ASCII letters
(?(1)") # If group 1 matched before, then match a quote
(?(2)>) # If group 2 matched before, then match a closing angle bracket
(?(3)\]) # If group 3 matched before, then match a closing bracket
(?(4)\)) # If group 4 matched before, then match a closing parenthesis
多くの | でなければできないと思います。
<[a-zA-z]+>|\[[a-zA-z]+\]|\([a-zA-z]+\)
または偽陽性が増えるリスク
[<\[\(][a-zA-z]+[>\]\)]
置換のためにこれが必要な場合、多くのプログラミング言語がコールバック関数をサポートしています
http://docs.python.org/2/library/re.html#re.sub
repl が関数の場合、重複しないパターンの出現ごとに呼び出されます。この関数は単一の一致オブジェクト引数を取り、置換文字列を返します。例えば: