2017-06-24 30 views
-1

私は以下の式を試しました。しかし問題は、regexは最初の "<"と最後の ">"の間の文字列を取ります。文字列を置換する正規表現 "<" and ">"

Scanner scanner = new Scanner(System.in); 
String str = scanner.nextLine(); 
str = str.replaceAll("\\<[^\\(]*\\>", "kk"); 

入力:こんにちは<デビッド> <「いったい>あなたは、私が取得しています

出力されますされている株式会社こんにちはKK:こんにちはKKを、あなたは私が欲しい

出力されますあなた

"<"と ">"の間の文字列を、全体としてではなく個別に置き換えるにはどのような正規表現を使用しますか(最初の " < "、最後に"> ")?

+2

「<[^>} *>はあなたの求めるものです。 – sln

+1

出力が "hello kk who kk are you"ではないと確信していますか? – Hawkings

+0

@Hawkingsはここを見ています。 https://ideone.com/Fh8XCi – tarun14110

答えて

0

パターン<.*?>を使用してください。

あなただけ貪欲パターンである.*を、使用している場合は、それが最初<とご入力の最後の>間のすべての文字(マッチ)を消費します。

ここ?文字

を使用して、それはあまり貪欲作るには何が必要です:

String character = "<.*?>"; 
String str = "hello <'david> who <'the heck> are you"; 
str = str.replaceAll(character, "kk"); 
System.out.println(str); 

は出力:KK

ハロー株式会社は、あなたが

ある

リファレンス:

greedy and lazy regexesについて詳しく知りたい場合は、こちらをご覧ください。


関連する問題