2012-04-18 17 views
1

文から末尾の10進数/ドットを削除する必要があります。以下はステートメントです末尾の特殊文字を正規表現で削除する

ABC paid 10.25 RS confirmed. from bank XYZ 20125722. on 23-12-2012 

ステートメントから末尾の小数点/ドットを削除します。後進/ドットを削除し、それは注意してください

ABC paid 10.25 RS confirmed from bank XYZ 20125722 on 23-12-2012 

ようにする必要があり、私は10.25で、小数点を削除する必要がありますが、他の場所ではありません。どのように私はJavaでそれを行うことができますか?

答えて

1

、単に以下のように、文字列にreplaceAll(String pattern,String replacement)メソッドを使用します。

あなたが使用する必要があります
String result = "ABC paid 10.25 RS confirmed. from bank XYZ 20125722. on 23-12-2012".replaceAll("\\.\\s+"," ") ; 
+3

参照してください。最後の単語の末尾にあります –

+1

その後、すべての要件を聞くことができます:) – mazaneicha

+0

ちょっと、あなたは正しいです! –

0

使用できる正規表現はPerlまたはPerl-regexをサポートする言語で/\.\S+/です。そうでない場合/\.[ ^I]/ "^ I"はTAB文字です。空に置き換えてください。

希望に役立ちます。 Javaでは

0

です\\ \\ S +、ドットの後に多くのスペースまたは1つのスペースを含めることがあるため。。

コードは次のとおりです。

String result = "ABC paid 10.25 RS confirmed. from bank XYZ 20125722. on 23-12-2012" 
       .replaceAll("\\.\\s+", " "); 
+0

これは、小数点の後に空白がないため、小数点が '10.25 'にも一致します。 –

0

だから、あなたは数ではなく、任意の.と一致するようにしたいですか?

"\\.(?![0-9])" 

この試合の数字の前に任意の.しない:あなたはnegative lookaheadと呼ばれる方法を使用することができます。

0

あなたの正規表現は

\.(?=\s|$) 

は、それが空白または文字列の末尾が続いている時にドットが一致することを意味しています。 (?=\s|$)positive lookaheadです。空白または後続の文字列の末尾があることを確認しますが、これには一致しません。したがって、再度挿入する必要はありません。空の文字列で置き換えてください。

は場合、これは動作しません、それhere on Regexr

あなたのJava用

String res = "ABC paid 10.25 RS confirmed. from bank XYZ 20125722. on 23-12-2012".replaceAll("\\.(?=\\s|$)", ""); 
+2

'\。(?!\ S)'を使うこともできますが、二重否定が混乱するかもしれません。 – Joey

+0

@Joeyあなたは正しいですが、私は(例えば、事前定義されたクラスを使用するためにcharクラス[^ \ W_]ではなく、そのクラスからいくつかの文字を除外しなければならない場合にのみ、二重否定を使用します。 – stema

関連する問題