1. ホーム
  2. javascript

[解決済み] RegExで括弧の間にあるものをマッチングさせる

2022-03-01 14:55:08

質問

これを動作させるのに苦労しています。私は以下のような文字列を持っています。

something/([0-9])/([a-z])

そして、私は正規表現か、括弧の間の各マッチを取得し、マッチの配列を返すような方法が必要です。

[
  [0-9],
  [a-z]
]

私が使っている正規表現は /\((.+)\)/ これは、正しいものにマッチするようです もし があるのみです。 という括弧のセットです。

JavaScript の RegExp メソッドを使用して、上記のような配列を取得するにはどうすればよいですか?私はその配列だけを返す必要があります。 返される の項目は、URL ルーティングスキームを作成するためにループスルーされます。

解決方法は?

正規表現パターンを「非貪欲」にするには、「.+」の後に「?

デフォルトでは、'*'と'+'は貪欲で、できるだけ長い文字列にマッチし、文字列内で起こるかもしれないマッチは無視されます。

Non-greedyは、パターンが可能な限り短いマッチにのみマッチするようにします。

参照 貪欲に気をつけろ をご覧ください。

または、正規表現を次のように変更します。

\(([^\)]+)\)

は、それ自体が括弧を含んでいない括弧の集まりにマッチします。