当我尝试使用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
,但很明显,我失败了。我怎么能纠正这个?
答案 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];
会给你最后一部分。