import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "((?<=\\[)\\w+)|(\\w+(?=\\=))|((?<=\\=)\\d+)|((?<=\\=)\\[\\d,\\d\\])|((?<=\\=)\\[\\d,\\d,\\d,\\d])|(\\\"[a-zA-Z\\._0-9\\s]+\\\")|(\\'[a-zA-Z\\._0-9\\s]+\\')";
final String string = "//完整代码匹配测试\n"
+ "[sprite file=\"1.png\" index=2 rect=[0,0,0,0] pos=[0,2]][sprite file='2.png' index=2 rect=[0,0,0,0]] //这是注释 /comment abcdefg\n"
+ "//宏名称单元测试\n"
+ "[bg]\n"
+ " [bg]\n"
+ "[ bg]\n\n"
+ "//字符串参数值单元测试\n"
+ "=\"abc\"\n"
+ "=\"ABC\"\n"
+ "=\"_abcABC\"\n"
+ "=\"_abcABC.png\"\n"
+ "=\"_abcABC special.png\" \n\n"
+ "//参数名单元测试\n"
+ "[bg index=2]\n"
+ "[bg index=2]\n"
+ "[bg index =2]\n\n"
+ "//int参数值单元测试\n"
+ "[bg index=54687]\n"
+ "[bg index=1 index2=26764]\n"
+ "//pos_t 4位长度的int数组测试\n"
+ "[bg index=0 pos=[1,2,3,4]]\n"
+ "//匹配坐标型 pos_t指长度为2的整数型数组,分别为横坐标x、纵坐标y\n"
+ "[bg index=0 pos=[0,2]\n"
+ "//abcdd asd [vb ] ";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html