BBCode 属性に一致する正規表現を作成しようとしています。attr=value
引用符なしの属性 ( ) と引用符付きの属性 ( ) を一致させたいattr="value"
のですが、マークが 1 つしかない場合は一致しません (attr="value
またはattr=value"
)。
先読みを使用して、この正規表現(サイズタグ用)で解決策に近づくことができました/\[size\=((?=")"(.*?)"|([^"]*))\](.*?)\[\/size\]/is
が、引用された属性と引用されていない属性の一致を異なるインデックスに配置します。スキームは次のとおりです。
+-----------------------+----------+----------+----------+----------+
| Input | Match #1 | Match #2 | Match #3 | Match #4 |
+-----------------------+----------+----------+----------+----------+
| [size="7"]txt[/size] | "7" | 7 | | txt |
+-----------------------+----------+----------+----------+----------+
| [size=7]txt[/size] | 7 | | 7 | txt |
+-----------------------+----------+----------+----------+----------+
これは大きな問題ではありませんが、それらを同じインデックスに一致させる方法があるかどうかを知りたいです。
背景情報:
基本的に、私は BBCode パーサーの改善に取り組んでいます。現在のところ、引用符なしで属性を配置することのみが許可されています"
。さて、それはそれに非常に多くの制限をもたらすので、引用された属性のサポートを追加しています. 問題は、後方互換性を壊すことができないことです。そのため、両方のケースで機能するものを考え出さなければなりません。