2017-06-24 82 views
-1

我试过了下面的表达式。但问题是,正则表达式取第一个“<”和最后一个“>”之间的字符串。正则表达式替换之间的字符串“<" and ">”

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

输入:你好< '大卫>谁<' 到底>你

输出我得到:你好KK你

输出我想:你好KK谁KK是你

我应该用什么正则表达式替换“<”和“>”之间的字符串,而不是整体(第一个“ <“和最后一个”>“)?

+2

'<[^>} *>'是你的要求。 – sln

+1

你确定你不期待输出结果是“你好,你是谁?” – 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谁KK是你

参考:

看看这个来了解更多关于greedy and lazy regexes


希望这有助于!