Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用正则表达式拆分字符串_Java_Regex - Fatal编程技术网

在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。感谢您发布比赛结果!