java中的正则表达式,搜索特定的字符串模式?

时间:2012-01-12 10:37:12

标签: java regex

我不太熟悉Java中使用的正则表达式。 如果我有一个字符串this/is/a/file!/path

现在使用substringindexOf我可以找到显示在/!之间的名称文件,但我非常确定使用正则表达式这些任务必须更加容易。

有人可以使用正则表达式给我一个例子吗?

4 个答案:

答案 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();