import java.util.regex.Matcher;
import java.util.regex.Pattern;public class test {
public static void main(String[] args) {
String str = "<ENTITY>1</ENTITY>" + "<ENTITY>2</ENTITY>" + "<ENTITY>3</ENTITY>" + "<ENTITY>4</ENTITY>" + "<ENTITY>5</ENTITY>"; Pattern p = Pattern.compile("<ENTITY>.*</ENTITY>", Pattern.MULTILINE);
Matcher m = p.matcher(str);
int count = 1;
while (m.find()) {
System.out.println(count + ": " + m.group());
}
}
}
输出的是:
1: <ENTITY>1</ENTITY><ENTITY>2</ENTITY><ENTITY>3</ENTITY><ENTITY>4</ENTITY><ENTITY>5</ENTITY>
怎么让程序输出
1: <ENTITY>1</ENTITY>
2: <ENTITY>2</ENTITY>
3: <ENTITY>3</ENTITY>
4: <ENTITY>4</ENTITY>
5: <ENTITY>5</ENTITY>
import java.util.regex.Pattern;public class test {
public static void main(String[] args) {
String str = "<ENTITY>1</ENTITY>" + "<ENTITY>2</ENTITY>" + "<ENTITY>3</ENTITY>" + "<ENTITY>4</ENTITY>" + "<ENTITY>5</ENTITY>"; Pattern p = Pattern.compile("<ENTITY>.*</ENTITY>", Pattern.MULTILINE);
Matcher m = p.matcher(str);
int count = 1;
while (m.find()) {
System.out.println(count + ": " + m.group());
}
}
}
输出的是:
1: <ENTITY>1</ENTITY><ENTITY>2</ENTITY><ENTITY>3</ENTITY><ENTITY>4</ENTITY><ENTITY>5</ENTITY>
怎么让程序输出
1: <ENTITY>1</ENTITY>
2: <ENTITY>2</ENTITY>
3: <ENTITY>3</ENTITY>
4: <ENTITY>4</ENTITY>
5: <ENTITY>5</ENTITY>
import java.util.regex.Pattern;public class TestInners {
public static void main(String[] args) {
String str = "<ENTITY>1</ENTITY>" + "<ENTITY>2</ENTITY>" + "<ENTITY>3</ENTITY>" + "<ENTITY>4</ENTITY>" + "<ENTITY>5</ENTITY>"; Pattern p = Pattern.compile("<ENTITY>\\d</ENTITY>");
Matcher m = p.matcher(str);
int count = 1;
while (m.find()) {
System.out.println(count + ": " + m.group());
count ++;
}
}
}
改成
Pattern p = Pattern.compile("<ENTITY>.?*</ENTITY>", Pattern.MULTILINE);
应该也可以吧,把贪婪改成懒惰
String str = "<ENTITY>1</ENTITY>" + "<ENTITY>2</ENTITY>" + "<ENTITY>3</ENTITY>" + "<ENTITY>4</ENTITY>" + "<ENTITY>5</ENTITY>"; Pattern p = Pattern.compile("<ENTITY>.*?</ENTITY>", Pattern.MULTILINE);
Matcher m = p.matcher(str);
int count = 1;
while (m.find()) {
System.out.println(count++ + ": " + m.group());
}
}
Pattern p = Pattern.compile(" <ENTITY>.*? </ENTITY>", Pattern.MULTILINE);
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TestInners {
public static void main(String[] args) {
String str = "<ENTITY>121321321Dasdasd</ENTITY>"
+ "<ENTITY>daf341afasda</ENTITY>"
+ "<ENTITY>fasfa32 423fsf</ENTITY>"
+ "<ENTITY>*%^&$^#</ENTITY>"
+ "<ENTITY>4da64gs5q23gs</ENTITY>"; Pattern p = Pattern.compile("<ENTITY>.*?</ENTITY>");
Matcher m = p.matcher(str);
int count = 1;
while (m.find()) {
System.out.println(count + ": " + m.group());
count ++;
}
}
}
输出:
1: <ENTITY>121321321Dasdasd</ENTITY>
2: <ENTITY>daf341afasda</ENTITY>
3: <ENTITY>fasfa32 423fsf</ENTITY>
4: <ENTITY>*%^&$^#</ENTITY>
5: <ENTITY>4da64gs5q23gs</ENTITY>
第一次匹配的结果我希望仅仅是:<ENTITY>1</ENTITY>我的关键问题是,如果把匹配模式从最长匹配,改成最短匹配.
Pattern p = Pattern.compile(" <ENTITY>[\\s\\S]*? </ENTITY>", Pattern.MULTILINE);