1

一致するこのテキストがあるとします。

http://localhost:8080/start.jsp;jsessionid=9E4CDB636248C9610F57704E5E07F782?whatever=true&somethingelse=true

次の正規表現を使用します。

^(.*?start\.jsp)(?:\;jsessionid=[^\?#]*)?(\?[^#]*)?(#.*)?$

結果のグループは次のとおりです。

  1. http://localhost:8080/start.jsp
  2. ?whatever=true&somethingelse=true

A. グループ番号 2 がこれではないのはなぜ;jsessionid=9E4CDB636248C9610F57704E5E07F782ですか?
2番目のグループの最初にあるこの部分?:\は何をしますか?

B. また、上記の例と同じグループを抽出する式を作成するにはどうすればよいですか? オプションが(だけでなく) 部分の前にbegin.jspandである場合はどうすればよいですか?start.jspstart.jspjsessionid

4

1 に答える 1

3
  1. (?: )非キャプチャ グループの構文です。名前が示すように、一致をキャプチャしません。
  2. 別の一致する非キャプチャ グループを配置します。(.*?(?:start|begin)\.jsp)
于 2011-01-11T12:16:03.850 に答える