我不太熟悉Java中使用的正则表达式。
如果我有一个字符串this/is/a/file!/path
现在使用substring
和indexOf
我可以找到显示在/
和!
之间的名称文件,但我非常确定使用正则表达式这些任务必须更加容易。
有人可以使用正则表达式给我一个例子吗?
答案 0 :(得分:3)
另一种方法是使用Pattern和Matcher。在这里,您可以使用组和更复杂的操作
Pattern pattern = Pattern.compile(yourRegex);
Matcher matcher = pattern.matcher(yourText);
while(matcher.find()) {
System.out.println(matcher.group(1));
}
看看
匹配器:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Matcher.html
模式:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html
Java中的正则表达式:http://docs.oracle.com/javase/tutorial/essential/regex/
答案 1 :(得分:0)
.*/([^!]*)!.*
应该这样做...然后你可以使用匹配器找到第一组(括号之间的部分,第0组是整个匹配)
我没有测试这个解决方案...
答案 2 :(得分:0)
您可以使用正则表达式创建一个Pattern对象,然后从中创建一个matcher对象来解析您的String。
String regex = ".*/(.*)!";
Pattern p = Pattern.compile (regex);
Matcher m = p.matcher(StringToBeMatched);
if (m.find()) {
String filename = m.group (1);
}
答案 3 :(得分:-1)
在Java中使用它们的最简单方法是使用String.matches
方法:
boolean matches = "abc".matches("[a-z]+");
这会产生true
。
如果你必须多次使用特定的正则表达式模式,第二种方法很有用。您可以编译并重复使用它:
Pattern pattern = Pattern.compile("[a-z]+");
Matcher matcher = pattern.matcher("abc");
boolean matches = matcher.matches();