我想匹配一個Java字符串(一個json的)模式。此模式在字符串中匹配多次,但它也與包含其他字符串的字符串匹配。 讓我用一個例子來解釋自己。當正則表達式匹配較大的字符串時獲取子匹配
String json = "IRRELEVANT_TEXT{'/element|1717_todossavoy/480/': {item_url:'/element|1717_Lorem/64/', item_description: 'Lorem ipsum dolor sit amet'},'/element|1717_Marcrie/480/': {item_url:'/element|1717_Vestibulum/64/', item_description: ' Vestibulum enim tellus, sodales sit amet consequat ut'},'/element|1717_Cannes05/434/': {item_url:'/element|1717_Nullam/64/', item_description: 'Nullam gravida risus vehicula nisi egestas'},'/element|1717_babelsavoy/266/': {item_url:'/element|1717_Pellentesque/64/', item_description: 'Pellentesque habitant morbi tristique senectus'}};IRRELEVANT";
Matcher matcher = Pattern.compile("/element.*480/").matcher(json);
while(matcher.find()) {
System.out.println(matcher.group());
}
我得到以下幾點:
/element|1717_todossavoy/480/': {item_url:'/element|1717_Lorem/64/', item_description: 'Lorem ipsum dolor sit amet'},'/element|1717_Marcrie/480/
但我想拿到2個以下鍵:
/element|1717_todossavoy/480/
/element|1717_Marcrie/480/
我在做什麼錯?
這是由於貪婪的正則表達式。查看http://stackoverflow.com/a/2301298/891391 – yatul