如何在Java中更正我的正则表达式?

时间:2016-07-20 15:31:06

标签: java regex

当我尝试使用Java从字符串中提取段时遇到了问题。原始字符串看起来像test/data/20/0000893220-97-000850.txt,我想提取第三个/后面的细分。

我的正则表达式就像

String m_str = "test/data/20/0000893220-97-000850.txt";
Pattern reg = Pattern.compile("[.*?].txt");
Matcher matcher = reg.matcher(m_str);
System.out.println(matcher.group(0));

预期结果为0000893220-97-000850,但很明显,我失败了。我怎么能纠正这个?

1 个答案:

答案 0 :(得分:1)

[^\/]+$

https://regex101.com/r/tS4nS2/2

这将提取包含斜杠之后的字符串中的最后一个段。如果你想要它会很好,而不是第三部分。

要查找并提取匹配项,您不需要匹配组(因此,不需要()),但是,您需要指示匹配器仅查找模式,因为{{1将尝试比较整个字符串。以下是相关位和here is a full example

.matches()

请注意调用matcher.find(); //finds any occurrence of the pattern in the string System.out.println(matcher.group()); //returns the entire occurence 内缺少索引。

另外,在Java中,您不一定需要正则表达式 - 使用普通Java可以完成最后一部分的提取

.group()

这将捕捉第三段

String matched = m_str.split('/')[2];

会给你最后一部分。