2017-09-16 18 views
-2

"ホーム333-666-8888通知しない"という文字列があり、その文字列から数字を抽出したい。そのために、JavaでReplaceAll機能を備えたソリューションが見つかりました。Javaの正規表現ですべての機能を置換する

String ab="Home 333-666-8888 Do Not Disturb"; 

String bc=ab.replaceAll("[^0-9-]", ""); 

そして、それは私に与え333-666-8888

replaceAll機能が実際に動作んどのように私の懸念はありますか?私は正規表現に一致するものを空白に置き換えてHome Do Not Disturbを返すと仮定していました。しかしそれは私に333-666-8888を与える。 replaceAllが正規表現の仕組みをどのように理解するのに役立ちますか?

+1

正規表現では '^'は何を意味しますか? –

+1

あなたの問題はタイプミスであり、今後の読者には役立たないとの理由で投票を終えることに投票します。 –

+0

^は基本的に正規表現の文字列の始まりです – NewGeekInTown

答えて

1

^は文字列の先頭に一致することを意味していると思いますか?文字クラスに配置されている場合を除いて、が文字列の先頭に一致します。文字クラス([])の内部にある場合は、「この文字クラスの文字以外のもの」を意味します。したがって、あなたの正規表現は、実際にあなたの文字列内の電話番号部分を除いてすべて一致し、空の文字列で電話番号部分を除くすべてを置き換えました!

文字列の先頭に一致することを意味しても、期待通りに機能しませんでした。あなたの文字列は0-9-で始まらないので。

これを解決するには、^を削除してください。

+0

説明をお寄せいただきありがとうございます。@ Sweeper..Helped Alot! :) – NewGeekInTown

+0

@NewGeekInTown私の答えがあなたの質問に答えると思うなら、そのチェックマークをクリックすることでそれを受け入れることを検討してください! – Sweeper

+0

完了しました!どうもありがとう.. – NewGeekInTown

0

でReplaceAll方法についてのご理解が このお試しください正しいです:

文字列AB = "333-666-8888" を。

文字列bc = ab.replaceAll( "[0-9-]"、 "");