我正在尝试将以下字符串与模式匹配:
String s = "AAA|VY~1055~ ~~BCN~09/24/2012~";
Matcher m = Pattern.compile("(.*)\\|VY\\~(.*)\\~").matcher(s);
if (m.find())
{
String value = m.group(2);
System.out.print("value = " + value);
}
输出结果为:
value = 1055~ ~~BCN~09/24/2012
但我想要这个:
value = 1055
为什么直到字符串结尾才能获得所有字符?
我已经阅读了一些消费到字符串末尾的内容,我尝试过:
Matcher m = Pattern.compile("(.*)\\|VY\\~(.*)\\~(.*)").matcher(s);
Matcher m = Pattern.compile("(.*)\\|VY\\~(.*)\\~.*").matcher(s);
但它不起作用。
有人能帮助我吗?
答案 0 :(得分:2)
使用*?
(不情愿)量词,它是懒惰的(尽快停止匹配)。
Matcher m = Pattern.compile("(.*)\\|VY\\~(.*?)\\~").matcher(s);
答案 1 :(得分:0)
您想了解gready, reluctant and possessive quantifiers(需要向下滚动一下)。