2

必須およびオプションのパラメーターをキャッチしたい。

文字列があるとしましょう

"X or Y"

「またはY」はオプションです。

できます

scan /(.*) (or (.*))?/

オプションのcatchの結果も含むサイズ3の配列を受け取ります。

2つのXとYの可能性のみの配列を受信するようにスキャンを作成するにはどうすればよいですか?

ありがとうございました

4

2 に答える 2

3

2番目の部分の外側のグループをグループとして作成できますnon-capturing

/(.*) (?:or (.*))?/

これで、正規表現には2つのキャプチャグループしかありません。

  • パーツをキャプチャするものX
  • パーツをキャプチャする別のY

したがって、これら2つのグループのみを含む配列を受け取ります。したがって、あなたはその部分を手に入れることができませんor

于 2013-02-17T12:37:06.750 に答える
0

このシナリオでも同じ答えが必要でした。ロジックで遊んだ後、最終的に成功するために、より良い解決策を得るためにたくさんグーグルで検索しました。そして、それはすべてのシナリオで完全に正常に機能しています。URLに1つまたは2つのパラメーターがあるかどうか。n個のパラメータで展開することもできます。とても簡単です。

私の問題の説明は、わずかな違いのある2つのURLがあったことです。

1番目のURL)。https://thumbor-cdn1.abc.com/unsafe/700x0/filters:quality(90)/https://s3.amazonaws.com/abc/app_photos/images/1528/original/cover_daily-1.jpg

2番目のURL)。https://thumbor-cdn1.abc.com/unsafe/600x0/https://s3.amazonaws.com/abc/users/images/000/263/588/blurred_preview/263588-profile-image-HYU0HBxA5c.jpg

700x0/filters:quality(90)1番目のURLにはパラメータが1つだけあり、2番目のURLにはパラメータが1つしかないことがわかります。600x0

そして正規表現は-(http|https):\/\/thumbor-cdn1.abc.com\/unsafe\/((.*?)|\/(.*?))\/(http|https):\/\/s3.amazonaws.com\/(abc|xyz)

上記のURLは例として使用されており、場合によっては有効なURLを使用できます。 ありがとうございました!

于 2018-03-09T12:54:05.720 に答える