有段程序如下:
public class TestStartEnd {
public static void main(String[] args) {
String s="abcxxxdedfcyyygggggxxxiiiiiyyyzzz";
Matcher m=Pattern.compile("xxx(.*)yyy").matcher(s);
m.find();
System.out.println(m.group());
}
}
输出是xxxdedfcyyygggggxxxiiiiiyyy。我如何编写正则表达式让输出是第一个匹配的字符串。即:
xxxdedfcyyy。
public class TestStartEnd {
public static void main(String[] args) {
String s="abcxxxdedfcyyygggggxxxiiiiiyyyzzz";
Matcher m=Pattern.compile("xxx(.*)yyy").matcher(s);
m.find();
System.out.println(m.group());
}
}
输出是xxxdedfcyyygggggxxxiiiiiyyy。我如何编写正则表达式让输出是第一个匹配的字符串。即:
xxxdedfcyyy。
String s="abcxxxdedfcyyygggggxxxiiiiiyyyzzz";
Matcher m=Pattern.compile("(xxx.+yyy)g").matcher(s);
m.find();
System.out.println(m.group(1));
输出:
xxxdedfcyyy
不过boost好像没有for JAVA的,试试其它正则表达式库
public class TestStartEnd {
public static void main(String[] args) {
String s="abcxxxdedfcyyygggggxxxiiiiiyyyzzz";
Matcher m=Pattern.compile("xxx(.*?)yyy").matcher(s);
m.find();
System.out.println(m.group());
}
}
abcxxxdeydfcyyygggggxxxiiiiiyyyzzz就不对了
我把程序又改了一下:加了一个x
public class ReplaceDemo { public static void main(String[] args) {
String s="abcxxxxdedfcyyygggggxxxiiiiiyyyzzz";
Pattern p=Pattern.compile("xxx(.*?)yyy");
Matcher m=p.matcher(s);
while(m.find()){
String s1=m.group();
System.out.println(s1);
}
}
}
输出是:
xxxxdedfcyyy
xxxiiiiiyyy现在我怎么写正则表达式才能让程序输出:
xxxxdedfcyyy
xxxdedfcyyy
xxxiiiiiyyy
要正确输出
xxxdedfcyyy
xxxiiiiiyyy
可以用
Pattern p=Pattern.compile("xxx([^x].*?)yyy");