我正在尝试构建一个Java正则表达式来匹配“.jar!
”
问题是,我不希望匹配器使用感叹号。我尝试使用Pattern.compile("\\.jar(?=!)")
,但失败了。就像逃避感叹号一样。
任何人都可以使用它或者这是一个JDK错误吗?
更新:我觉得自己像个白痴,Pattern.compile("\\.jar(?=!)")
确实有用。我使用的是Matcher.matches()而不是Matcher.find()。
答案 0 :(得分:1)
使用正则表达式适合我(使用Sun JDK 1.6.0_02 for Linux):
import java.util.regex.*;
public class Regex {
private static final String text = ".jar!";
private static final String regex = "\\.jar(?=!)";
public static void main(String[] args) {
Pattern pat = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pat.matcher(text);
if (matcher.find()) {
System.out.println("Match: " + matcher.group());
} else {
System.out.println("No match.");
}
}
}
打印:
Match: .jar
(没有!)
答案 1 :(得分:0)
另外,你可以尝试拳击它
Pattern.compile("\\.jar(?=[!])")
Java必须被破坏:Perl
use strict;
use warnings;
my @data = qw( .jar .jar! .jarx .jarx! );
my @patterns = (
"\\.jar(?=!)",
"\\.jar(?=\\!)",
"\\.jar(?=[!])",
);
for my $pat ( @patterns ){
for my $inp ( @data ) {
if ( $inp =~ /$pat/ ) {
print "$inp =~ $pat \n";
}
}
}
- >
.jar! =~ \.jar(?=!)
.jar! =~ \.jar(?=\!)
.jar! =~ \.jar(?=[!])