3

私は次の2つを持っていますregular expressions(順番に)。

1. ^~/buying/(.*)\?(.*)   => foo= group 1  baa= group 2.
2. ^~/buying/(.*)         => foo= group 1  baa= nothing/empty/null/baibai

私がやろうとしているのは、URLに疑問符がある場合、それを2つのグループに分割することです. それ以外の場合は、すべてのものを最初のグループに入れます。

私にとって順序が重要な理由は、それらを入れ替えると、「?」#2 式 (上記) がすべてをキャッチするため、regex が起動されることはありません。

それで..これは再修正できますか?

注:この Web サイト** を使用してデバッグ/微調整を試みましたが、わかりません。

** 私はそのサイトとは何の関係もありません。

4

3 に答える 3

5

これを試して:

^~/buying/([^?]*)\??(.*)

([^?]*)- 疑問符を含まない最初のグループをキャプチャします。
\??- オプションの疑問符。
(.*)- オプションの 2 番目のグループ - 空にすることができます。

于 2010-06-03T06:26:30.473 に答える
1

2番目の部分をオプション(テストされていない)にするのはどうですか:

^~/buying/([^\?]*)(?:\?(.*))?

?:、オプションの部分 (必要な部分と疑問符) がキャプチャされないようにするためにあります。

編集:貪欲のため、否定文字クラス [^\?] を使用するか、遅延させる必要があります。(バックトラッキングを減らすため、否定文字クラスが推奨されます。)

于 2010-06-03T06:32:23.727 に答える
0

このように参加することもできます。

^~/buying/(.*)(\?(.*))?$

于 2010-06-03T06:33:32.813 に答える