2017-11-21 10 views
1

もし私が以下のような文字列を持っていたらどうすればいいですか1.23(8752)特定のポイントの文字列を解析する

例:

Testversion v1.23 (8752), beta v1.02 (458) 

私は正規表現をしようとしていますが、私はこれまでのところ、これが唯一の1.23を与える不運午前:

String result = input.replaceAll("[^\\d.]", ""); 
+0

PCREは\ dは+ \ 'だろう\。 d + \(\ d + \) 'は、あなたの解決策を見つけるのに役立つかもしれません。 あなたのスラッシュも倍増する必要があります(私のコメントでは\ d、\\ dを書く必要があります) –

+0

こんにちは、あなたはreplaceAll( "\\ d + \\ \\(\\ d + \\)"、 "); ? 私は不幸にも同じ出力をしてくれます。 – Simon

+0

申し訳ありません、私はPHPで試していますので、Java版のテストはできません^^あなたは今、幸運を助けてくれます!または、replaceAll( "\\ d + \\。\\(\\ d + \\)"、 ""); (二重括弧をエスケープする) –

答えて

1

あなたは.*?(v\\d+\\.\\d+\\s*\\(\\d+\\)).*

input.replaceFirst(".*?(v\\d+\\.\\d+\\s*\\(\\d+\\)).*", "$1"); //v1.23 (8752) 

Java Demo Link

を使用することができます

説明

.*?(v\\d+\\.\\d+\\s*\\(\\d+\\)).*:できるだけ少ない

  • (v\\d+\\.\\d+\\s*\\(\\d+\\))として.*?マッチ何も:グループ

    • v\\d+\\.\\d+キャプチャの(初め:試合v\\d+ 1桁以上.文字を、\\d+
    • \\s*\\(\\d+\\):その後、\\s*ゼロ以上のスペース( 1桁以上)

    ).*:グループのキャプチャの終わり、.*マッチ何行の終わりまで

+1

これは完璧です、thx – Simon