2016-06-14 10 views
-1

pdfドキュメントから読み取ったデータを編集するために、javaのstring.replaceAll()またはreplaceFirst()メソッドを使用しようとしています。返すことができ、データの行されます。番号以外のすべてを削除するRegex

1分の21 ** E(6-11)4479 77000327633(U)

私だけで作業して探している変数に77000327633を保存したいですこの11桁の数字だけをキャプチャする正しい正規表現。私は正規表現の周りを検索しようとしたが、何も私の希望の結果を与えるようです。

+0

の内容によって、すべてを置き換えるためにここにあるアイデアを表示するだけで完璧であることを意味し、常に構造ですされていません同じ?これまでにどの表現を試しましたか?番号に一致する式を提供できる場合は、キャプチャグループに番号部分をラップし、 'replaceAll()'に後ろ参照を使用することができます。 '" yourstring ".replaceAll("接頭辞(数字)接尾辞 "、" $ 1 ")'です。 – Thomas

+0

数字が常に約11桁であることが分かっている場合、この正規表現(\ d {5,11})をここで簡単に使用できます。https://regex101.com/r/kT3rR0/1をテストできます –

+1

番号を選ぶ?文字列の最後の数字ですか?文字列の中で最大の数ですか? 4桁以上の数字?文字列の4番目の空白以外の項目は?何? –

答えて

0

それは次のように行うことができる:

String value = "21/1**E (6-11) 4479 77000327633 (U)"; 
Pattern pattern = Pattern.compile(".* (\\d{11}) .*"); 
System.out.println(pattern.matcher(value).replaceAll("$1")); 

出力:

77000327633 

注意:これはあなたの番号が11桁で、前と後にスペースがあることを前提としています。

NB2:それがグループでグローバルなパターンを定義し、グループ

0

これだ:(.*)[ ]([0-9])*[ ](.*)

使用して値にアクセスできます$ 2

+0

定量器を間違って配置したようです。 –

+0

どういう意味ですか? – CZ54

関連する問題