私の質問のタイトルは少し複雑ですが、基本的に私がやりたいことは次のとおりです。
次のテキストがあるとします。
[table]
[tr]
[td]test str 1[/td]
[td]test str 2[/td]
[/tr]
[/table]
私が見つけることを可能にする正規表現はありますか?
- [td] タグと [/td] タグの間にある文字列
- [td] から [/td] までの部分全体が [table] タグと [/table] タグの間にある
- また、[table] タグと [td] タグの間のテキストに [/table] タグを含めることはできません
- [/td] タグと [/table] タグの間のテキストに [table] タグを含めることはできませ
ん
当たり前のように聞こえるかもしれませんが、この正規表現はユーザー入力の処理に使用されるため、安全な正規表現である必要があり、ユーザーがテーブルの外で [td] を入力した場合 (すべてのタグは html に変換されます)、サイトのページのレイアウトに使用されるテーブルに影響を与えます。
したがって、最初に「test str 1」に一致し、次に「test str 2」に一致する必要がありますが、その文字列が td タグ内にある場合に限ります。これは、テーブルタグ内にある必要があり、その間に別のテーブルタグがない場合があります.
これは私が得た限り近いです:
/\[table(.*?)\]((?!\[\/table\]).*?)\[td(.*?)\](.*?)\[\/td\]((?!\[table(.*?)\]).*?)\[\/table\]/si
しかし、テーブルタグがあってはならない部分、つまりテーブルタグと td タグの間に何かが欠けていると思います。