2017-03-23 2 views
2

私はIDを取得しようとしているURLを持っています。問題は、URLが次のようになる可能性があります。"https://www.website.com/blah/1234567890:0""https://www.website.com/blah/1234567890/"または"https://www.website.com/blah/1234567890"正規表現の終了文字は、2のうちの1つになることができます。

これは現在、問題を引き起こしている最初のオプションです。基本的には、私が望むのは "1234567890"なので、最後のオプションでは:0を省略する必要があります。ここで

は/エンディングなしで/ IDを取得するときに私が試したものです。ここで

([^/]*)\/?$ 

は私が終わる/およびなしで/の両方をカバーしようとしたものです:0、それは私のように動作しません。 (idが一致6ですが、私はそれは常に6になります知る方法をしたん)考えた:

([^/]*)[/:?$] 

答えて

2

/、または:?またはのいずれか、あなたの[/:?$]サブパターンは、単一の文字にマッチします($内のシンボル[...]は特別な正規表現演算子ではありません)。

あなたはまず否定文字クラスを遅延定量化させる、および/または:0 1または0回に一致し、オプショングループを追加することがあります。

([^\/]*?)(?:\/|:0)?$ 

regex demoを参照してください。 0[0-9]に置き換えて、の任意の数字と文字列の最後を一致させます。

詳細

  • ([^\/]*?) - グループ1:できるだけ少ないよう/以外ゼロ以上の文字(起因*?数量詞に対して)
  • (?:\/|:0)? - オンを一致任意の非捕捉基2つの選択肢の1つまたは0回:/または:0
  • $ - 文字列の最後。
関連する問題