2012-02-20 15 views
0

で動作します私はJavaでこの正規表現を試してみました:解析テキストは、オンラインでのテストではなく、このコード

Pattern orderCheck = Pattern.compile("^([\\-\\+])?(created|title|price|creation)$", Pattern.CASE_INSENSITIVE); 
orderCheck.matcher(value).matches(); 

そして奇妙な:作成

  • -createdの作品作品
  • +作成:は動作しません
  • タイトル:
  • +タイトル作品
  • -title作品
  • などの作品はありませんが...

+の非検証として結果正規表現が、私はなぜ理解できません。

このonline regex testerを使用すると、すべての値に対して完全に機能します。 ?私も失敗し、この変異体しようとしたが、

  • ^[\ - \ +](作成|タイトル|価格|作成)$
  • ^[ - +](作成|タイトル? |価格|作成)$
  • ^( - +)(作成|タイトル|価格|作成)$
  • ^( - |?+)(作成|タイトル|価格|作成)$
  • ^[? - | +]?(作成済み|タイトル|価格|作成済み)$
  • ^(作成済み|タイトル| pric) e |作成)$

私の必要性に合った正しい正規表現は何ですか?私はどこが間違っているかわかりません:/

ありがとうございました!

+1

)O:多分休憩を持っているし、最初の数時間のためにベッドに行く必要があります。どのようにこれをテストしていますか? –

+0

は '-'をエスケープして動作するはずです。 –

+2

isbadawiと同様に、あなたのパターンはうまくいきます(実際には '-'と' + 'のバックスラッシュは必要ありません)。私は 'orderCheck.matcher(value)'が実際にはあなたが思う '+'で始まっていないと確信しています。おそらく '%2B'にURLエスケープされていますか?または、* de * -URLをスペースにエスケープしたかもしれませんか? – ruakh

答えて

1

これは機能します。たぶんあなたは最後にスペースチャーを忘れた/あなたの価値の始まり?あなたのパターンはOKのようです。あなたのパターンは私の作品

test res

関連する問題