配列のように「見える」文字列に一致する正規表現を作成しようとしています。
[
、{
またはで始まる必要があります(
]
、、、}
またはで終わる必要があります)
- 開始と終了が同じブラケットを使用するかどうかは関係ありません(たとえば、問題ありません
(....}
) - アイテムはコンマで区切られます
- すべての空白タイプは無視されます
- 空の配列を受け入れる必要があります
私が最初に思いついたのは
'/\s*[\[|\{|\(]\s*\w+\s*[,\s*\w+]*\s*[\]|\}|\)]\s*/'
残念ながら、これは空の配列を受け入れません。だから私は別のものを試しました
'/\s*[\[|\{|\(][\s*\w+\s*]?[,\s*\w+]*\s*[\]|\}|\)]\s*/'`
これにより、空の配列が許可されますが、開き角かっこの後のコンマで始まる配列も許可されます(例[, item, item]
)。
私が現在行っているのは、2つの異なる正規表現を使用して、どちらかが一致することを確認することです。他の正規表現は、ここで説明した最初の正規表現と似ていますが、開始マーカーと終了マーカーの間に0個以上の空白文字しか使用できません。