2011-02-01 9 views
-5

下のパターンに一致するJava正規表現とは何ですか?以下の文字列と一致するようにJava正規表現が必要

<anyString>.<5 or 10>.anyNumber.anyNumber 

ここで5と10は数字です。

+4

すなわちこれは、正規表現で解決するための些細な問題です。問題を解決しようとしたら、他の誰かがあなたのためにそれを解決するのを1〜2時間待たずに、あなたがより良いサービスになると思います。正規表現は難しくありません(特にこのようなもの)。任意の言語でコードを書くことができれば、数時間の学習と練習だけで正規表現を学ぶことができます。 –

+0

http://txt2re.com/をご覧ください。それは非常に良い出発点を与えます:http://txt2re.com/index.php3?s=string.5.123.456&3&5&6 – marcog

答えて

6
.*\.(?:5|10)\.\d+\.\d+ 

が有効です。

説明:

.*  # any number of characters (except newlines) 
\.  # literal dot 
(?:5|10) # 5 or 10 
\.  # literal dot 
\d+  # one or more digits 
\.  # literal dot 
\d+  # one or more digits 

あなたはJavaでそれを使用する場合、あなたは正規表現を構築する際にバックスラッシュをエスケープする必要がある、ということを忘れないでください:

Pattern regex = Pattern.compile(".*\\.(?:5|10)\\.\\d+\\.\\d+"); 
+0

5または10に「1」または「0」しかない場合、これは一致しませんセクション? –

+0

@Sachin:いいえ '(?:5 | 10)'は '5'または' 10'にマッチします。 –

0

は私が正しくあなたの意図を読んでと仮定すると、これはうまくいくはずです:

Pattern p = Pattern.compile(".*?\\.(?:5|10)\\.(\\d+)\\.(\\d+)"); 
    Matcher m; 

    m = p.matcher(".5.11.10"); 
    m.matches(); // == true 
    m.group(1).equals("11"); 
    m.group(2).equals("10"); 


    m = p.matcher("hannib al.10.11.12"); 
    m.matches(); // == true 
    m.group(1).equals("11"); 
    m.group(2).equals("12"); 
0

あなたは.5.1.1

このフォームはトリック\.(5|10)\.[0-9]\.[0-9]

または

を行う必要があります例有効な文字列を意味すると仮定すると、次の二つの数字は、複数の文字を持つことができる場合.10.123.1234

\.(5|10)\.[0-9]*\.[0-9]*

+1

'(5)|(10)'は '(5 | 10)'である必要があります。 –

+0

@Tim Pietzcker - 良い点は、現在書かれているように '.5'や' 10.123.123'にマッチする - それに応じて編集する – Robb

関連する問題