在Java中使用正则表达式拆分字符串
我试图在用户定义的字符串中找到字段,并用它们创建一个数组。例如,如果用户输入:在Java中使用正则表达式拆分字符串,java,regex,Java,Regex,我试图在用户定义的字符串中找到字段,并用它们创建一个数组。例如,如果用户输入: abc @{fieldOne} defg @{FieldTwo} 123 @{FieldThree} zyx 因此,我希望: fields[0] = "@{fieldOne}" fields[1] = "@{fieldTwo}" fields[2] = "@{FieldThree}" 我有一个正则表达式来查找子字符串:/@{[a-zA-Z]*}/g,但是我在Java中使用它来分解字符串时失败了。以下是我目前得到的
abc @{fieldOne} defg @{FieldTwo} 123 @{FieldThree} zyx
因此,我希望:
fields[0] = "@{fieldOne}"
fields[1] = "@{fieldTwo}"
fields[2] = "@{FieldThree}"
我有一个正则表达式来查找子字符串:/@{[a-zA-Z]*}/g
,但是我在Java中使用它来分解字符串时失败了。以下是我目前得到的,并尝试了以下变化:
String displayString = "abc @{fieldOne} defg @{FieldTwo} 123 @{FieldThree} zyx";
Pattern pattern = Pattern.compile("/@\\{[a-zA-Z]*\\}/g");
Matcher matcher = pattern.matcher(displayString);
matcher.matches()
返回false-我猜我的regexp的格式不正确,但我还没有弄清楚它应该是什么
提前感谢您的评论和回答 不需要前斜杠或
//g
修饰符。此外,使用双转义
String displayString = "abc @{fieldOne} defg @{FieldTwo} 123 @{FieldThree} zyx";
Pattern pattern = Pattern.compile("@\\{[a-zA-Z]*\\}");
Matcher matcher = pattern.matcher(displayString);
while ( matcher.find() ){
System.out.println(matcher.group(0));
}
太好了,谢谢!(我确实有双斜杠,只是在我原来的SO帖子中没有)。我的主要问题是使用matcher.matches()
,因为这并没有达到我的预期。。所以不管我用什么样的正则表达式返回false。感谢您发布比赛结果!