请帮助制作转换后续字符串的正则表达式:
A [B C] "D E F"
分为3个字符串
A
B C
D E F
其中A,B,C,D,E,F是一组字母数字字符,可能包含也可能不包含特殊字符,例如+:/._-等。
我尝试过类似:[[a-zA-Z0-9/: +]+]\s"[a-zA-Z0-9._/?&=-]+"\s[a-zA-Z0-9-]+
的内容。
但是当我使用Java的Pattern和Matcher类时,这会返回单个识别的模式。我想得到3个不同的小组。
答案 0 :(得分:2)
如果我理解你的尝试,答案可能非常简单:
String test = "A [B C] \"D E F\"";
// | any number of characters (group 1) followed by...
// | | one whitespace, followed by
// | | | left square bracket, f.b...
// | | | | any number of characters (group 2), f.b...
// | | | | | right square bracket, f.b...
// | | | | | | one whitespace, f.b...
// | | | | | | | one double quote, f.b...
// | | | | | | | | any number of characters (group 3) f.b...
// | | | | | | | | | one double quote
Pattern p = Pattern.compile("(.+?)\\s\\[(.+)\\]\\s\"(.+?)\"");
Matcher m = p.matcher(test);
if (m.find()) {
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
}
<强>输出强>
A
B C
D E F
注意强>
如果您希望将更具体的字符范围与您的组1,2和3匹配,请将点字符替换为类或其他一般化。