从Java中的字符串中提取模式

时间:2017-01-16 16:43:33

标签: java pattern-matching

我在Java中有一个String变量,如下所示。

String s = "hello\nthis is java programme\n.class file will be generated after executing it\n";

现在我需要从上面的字符串变量中提取.class部分。怎么做?

3 个答案:

答案 0 :(得分:0)

我真的只看到一种方法让你不仅仅输出“.class”,这是在打印之前首先查看字符串是否包含“.class”。 这是一个这样做的功能。传递一个字符串来查找和一个字符串来搜索它。

//Returns the string if found, else returns an empty string
public String FindString(String whatToFind, String whereToFind)
{
    return whereToFind.contains(whatToFind) ? whatToFind : "";
}

输出

String s = "hello\nthis is java programme\n.class file will be generated after executing it\n";
System.out.println(FindString(".class", s)); // prints .class

答案 1 :(得分:0)

如果您只想检查字符串是否包含" .class"你可以轻松地检查它里面的模式:

s.contains(".class");

或者,如果您想使用正则表达式检查字符串中包含.class的{​​{1}}模式:

\n

Pattern p = Pattern.compile(".*\\.class.*", Pattern.DOTALL); Matcher m = p.matcher(s); boolean b = m.matches(); 也可以将DOTALL视为角色。

s是您在代码中定义的字符串。

答案 2 :(得分:0)

使用正则表达式,例如answer

String s = "hello\nthis is java programme\n<some_class_name_here>.class file will be generated after executing it\n";
//the following pattern I think will find what you're looking for,
Pattern pattern = Pattern.compile("\n(.*\.class)");
Matcher matcher = pattern.matcher(s);
if (matcher.find())
{
    System.out.println(matcher.group(1));
}