【程序】
package test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test4 { public static void main(String[] args) { String[] arr= {"#{1A}","${b1}","${1}","${222}","${A_A}","${name}","${1_2}","hello","6397"}; for(String str:arr) { System.out.println(getInnerText(str)); } } private static String getInnerText(String text) { Pattern pattern = Pattern.compile("^([$]|[#])([{]([_a-zA-Z0-9]*[a-zA-Z]+[_a-zA-Z0-9]*)[}])$", Pattern.CASE_INSENSITIVE); Matcher matcher=pattern.matcher(text); while(matcher.find()) { return matcher.group(3); } return text; } }
输出:
1A
b1
${1}
${222}
A_A
name
${1_2}
hello
6397
【正则式分析】
^([$]|[#])([{]([_a-zA-Z0-9]*[a-zA-Z]+[_a-zA-Z0-9]*)[}])$中
^....$ : 从头到尾
([$]|[#]) :开头是$或#
[{]:接着是一个{
[_a-zA-Z0-9]*[a-zA-Z]+[_a-zA-Z0-9]*:下划线字母数字随意,但一定要有一个字母,否则构不成变量。
[}]:再接着一个}
matcher.group(3):第三个成对的括号部分
END