我正在尝试编写一个简单的正则表达式来标识列表中以".req.copied"扩展名结尾的所有文件名.我正在使用的代码如下
public class Regextest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String test1=new String("abcd.req.copied");
if(test1.matches("(req.copied)?")) {
System.out.println("Matches");
}
else
System.out.println("Does not Match");
}
}
Run Code Online (Sandbox Code Playgroud)
正则表达式在在线正则表达式测试中测试正常,但在程序中不起作用.我尝试了多种组合(比如拆分req并复制到两个正则表达式,或点字符的字面匹配)但没有任何效果(即使是(reg)最简单的正则表达式?返回"不匹配"输出).请让我知道如何解决这个问题.
matches这里的主要问题是它需要从正则表达式匹配整个字符串.但在你的情况下,你的正则表达式只描述了它的一部分.
如果你真的想在matches这里使用你的代码看起来更像
test1.matches(".*\\.req\\.copied")
Run Code Online (Sandbox Code Playgroud)
.表示任何字符(除了行分隔符之外\r)所以如果你想要它只表示点你需要像它一样转义它\.(在字符串中我们需要把它写成"\\."因为\那里也有特殊含义 - 比如创建特殊字符\r \n \t等等 - 所以它还需要通过附加逃避\)..* 将让正则表达式接受任何字符 .req.copied但在你的情况下,你应该只使用endsWith方法
test1.endsWith(".req.copied")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10578 次 |
| 最近记录: |