Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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,我知道这是一个简单的问题,但我被阻止了:我想检索以这种形式编写的所有字符串: $F{ETIQX} 其中X是一个数字。我编写了这个正则表达式,但出现了错误: if (textField.getText().matches("$F{ETIQ\d}")){ System.out.println("matches!!"); } 任何帮助都将不胜感激 \$F\{ETIQ\d\} 在正则表达式中有意义的转义字符 $ means end of string { means start of a

我知道这是一个简单的问题,但我被阻止了:我想检索以这种形式编写的所有字符串:

$F{ETIQX} 
其中X是一个数字。我编写了这个正则表达式,但出现了错误:

 if (textField.getText().matches("$F{ETIQ\d}")){
  System.out.println("matches!!");
 }
任何帮助都将不胜感激

\$F\{ETIQ\d\}
在正则表达式中有意义的转义字符

$ means end of string
{ means start of a quantifier
} means end of a quantifier
为了匹配这些,你必须从字面上避开它们

这是一个演示

在java中,
\
没有任何意义,并且会出现错误,因此我们需要使用
\
来转义
\

在正则表达式中有意义的转义字符

$ means end of string
{ means start of a quantifier
} means end of a quantifier
为了匹配这些,你必须从字面上避开它们

这是一个演示

在java中,
\
没有任何意义,并且会出现错误,因此我们需要使用
\
来转义
\

我要检索所有字符串

那么您首先就不应该使用
.matches()
。但是一个
匹配器和
查找()
.matches()
用词不当。只有当整个输入匹配正则表达式时,它才会成功(这与正则表达式匹配的定义相矛盾,正则表达式匹配可以发生在输入的任何地方)

此外,您的正则表达式应该是:

"\\$F\\{ETIQ\\d\\}"
(您需要在Java字符串中转义反斜杠)

$
{
}
是正则元字符;第一个是匹配输入结尾的锚,后两个是重复量词的边界

您的代码应为:

private static final Pattern PATTERN = Pattern.compile("\\$F\\{ETIQ\\d\\}");

// ...

final Matcher m = PATTERN.matcher(textField.getText());

while (m.find())
    // work with m.group()
我要检索所有字符串

那么您首先就不应该使用
.matches()
。但是一个
匹配器和
查找()
.matches()
用词不当。只有当整个输入匹配正则表达式时,它才会成功(这与正则表达式匹配的定义相矛盾,正则表达式匹配可以发生在输入的任何地方)

此外,您的正则表达式应该是:

"\\$F\\{ETIQ\\d\\}"
(您需要在Java字符串中转义反斜杠)

$
{
}
是正则元字符;第一个是匹配输入结尾的锚,后两个是重复量词的边界

您的代码应为:

private static final Pattern PATTERN = Pattern.compile("\\$F\\{ETIQ\\d\\}");

// ...

final Matcher m = PATTERN.matcher(textField.getText());

while (m.find())
    // work with m.group()

所以你也应该逃避最后一个bracket@AndiKrusch是的,我们也应该逃离最后一个括号,我错过了,所以你也应该逃离最后一个括号bracket@AndiKrusch是的,我们也应该避开最后一个括号,我错过了