1

文字列で始まる場合は文字列と一致する正規表現が必要ですhttp://www.xyzabc.comが、文字列に「getJobId」という単語を含めることはできません。

例えば:

http://www.xyzabc.com/abc          <--- should return true 
http://www.xyzabc.com/getJobId=9   <--- should return false

私は次の正規表現で試しました:

^(http://www\.xyzabc\.com)((?!getJobId).)*$

しかし、それは機能しませんでした。誰か提案できますか?

4

3 に答える 3

2

私はちょうどあなたのコードを取り、それを実行しました (冗長な括弧とアンカーを削除します):

final String regex = "http://www\\.xyzabc\\.com((?!getJobId).)*";
System.out.println("http://www.xyzabc.com".matches(regex));
System.out.println("http://www.xyzabc.com/abc".matches(regex));
System.out.println("http://www.xyzabc.com/getJobId=9".matches(regex));

版画

true
true
false

まさにあなたが望むもののようですね。

アップデート

編集した回答には、二重のバックスラッシュではなく単一のバックスラッシュがあります。

于 2012-11-16T09:05:26.520 に答える
1

はるかに優れた正規表現は次のようになります

^(http://www.xyzabc.com)(?!.*?getJobId).*$

(?!.*?getJobId)getJobId が存在するかどうかを確認し、存在する場合は一致しません!

于 2012-11-16T09:09:30.003 に答える
0

この正規表現を使用しますhttp://www\.xyzabc\.com((?!getJobId)\S)*(?=\s|$)

http://www\.xyzabc\.comシルド定数

((?!getJobId)\S)*getJobId は含まれていませんが、シンボルを持つことができます

(?=\s|$)次の記号スペースまたは一致が最後の単語です

于 2012-11-16T09:10:49.643 に答える