源文件内容:label-switched-path To-R5 {
from 1.1.1.1;
to 5.5.5.5;
revert-timer 600;
no-decrement-ttl;
retry-timer 100;
retry-limit 100;
primary PE15-s1;
primary R5-s1;
secondary R5-s2 {
select manual;
standby;
}
secondary R5-s3;
}求primary 和secondary后面的名称,红色粗体部分
注意:一行的最后结尾有两种方式,以{结尾,或者;结尾。附:验证程序
public static void main(String args[]) {
String str =
"label-switched-path To-R5 {\n"+
" from 1.1.1.1;\n"+
" to 5.5.5.5;\n"+
" revert-timer 600;\n"+
" no-decrement-ttl;\n"+
" retry-timer 100;\n"+
" retry-limit 100;\n"+
" primary PE15-s1;\n"+
" primary R5-s1;\n"+
" secondary R5-s2 {\n"+
" select manual;\n"+
" standby;\n"+
" }\n"+
" secondary R5-s3;\n"+
"}\n"+
"secondary R5-s2 {\n"+
"secondary R5-s3;\n";
String reg = "primary (.+)|secondary (.+)"; Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}
from 1.1.1.1;
to 5.5.5.5;
revert-timer 600;
no-decrement-ttl;
retry-timer 100;
retry-limit 100;
primary PE15-s1;
primary R5-s1;
secondary R5-s2 {
select manual;
standby;
}
secondary R5-s3;
}求primary 和secondary后面的名称,红色粗体部分
注意:一行的最后结尾有两种方式,以{结尾,或者;结尾。附:验证程序
public static void main(String args[]) {
String str =
"label-switched-path To-R5 {\n"+
" from 1.1.1.1;\n"+
" to 5.5.5.5;\n"+
" revert-timer 600;\n"+
" no-decrement-ttl;\n"+
" retry-timer 100;\n"+
" retry-limit 100;\n"+
" primary PE15-s1;\n"+
" primary R5-s1;\n"+
" secondary R5-s2 {\n"+
" select manual;\n"+
" standby;\n"+
" }\n"+
" secondary R5-s3;\n"+
"}\n"+
"secondary R5-s2 {\n"+
"secondary R5-s3;\n";
String reg = "primary (.+)|secondary (.+)"; Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}
public static void main(String args[]) {
String str = "label-switched-path To-R5 {\n"
+ " from 1.1.1.1;\n"
+ " to 5.5.5.5;\n"
+ " revert-timer 600;\n"
+ " no-decrement-ttl;\n"
+ " retry-timer 100;\n"
+ " retry-limit 100;\n"
+ " primary PE15-s1;\n"
+ " primary R5-s1;\n"
+ " secondary R5-s2 {\n"
+ " select manual;\n"
+ " standby;\n" + " }\n"
+ " secondary R5-s3;\n"
+ "}\n"
+ "secondary R5-s2 {\n"
+ "secondary R5-s3;\n";
String reg = "(primary |secondary )(.+?)(?=[; {])";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(2));
}
}
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
if(null == matcher.group(1))
System.out.println(matcher.group(2));
else
System.out.println(matcher.group(1));
}
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Forest implements Serializable{
public static void main(String args[]) {
String str =
"label-switched-path To-R5 {\n"+
" from 1.1.1.1;\n"+
" to 5.5.5.5;\n"+
" revert-timer 600;\n"+
" no-decrement-ttl;\n"+
" retry-timer 100;\n"+
" retry-limit 100;\n"+
" primary PE15-s1;\n"+
" primary R5-s1;\n"+
" secondary R5-s2 {\n"+
" select manual;\n"+
" standby;\n"+
" }\n"+
" secondary R5-s3;\n"+
"}\n"+
"secondary R5-s2 {\n"+
"secondary R5-s3;\n";
String reg = "(?<=primary|secondary) (.+)[{;]"; Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
}
}
import java.util.regex.Pattern;
public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str =
"label-switched-path To-R5 {\n"+
" from 1.1.1.1;\n"+
" to 5.5.5.5;\n"+
" revert-timer 600;\n"+
" no-decrement-ttl;\n"+
" retry-timer 100;\n"+
" retry-limit 100;\n"+
" primary PE15-s1;\n"+
" primary R5-s1;\n"+
" secondary R5-s2 {\n"+
" select manual;\n"+
" standby;\n"+
" }\n"+
" secondary R5-s3;\n"+
"}\n"+
"secondary R5-s2 {\n"+
"secondary R5-s3;\n";
String reg = "(primary|secondary)(.*)(;|\\{)"; Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(2));
}
}}
非常感谢,其他人都没有注意到结尾的空格。结果:
PE15-s1
R5-s1
R5-s2
R5-s3
R5-s2
R5-s3