如何使用正则表达式获取字符串中最后一个逗号后的内容?
示例:
abcd,fg;ijkl, cas
输出应为cas
注意:最后一个逗号和'c'
字符之间有一个空格,也需要删除。
此模式在最后一个逗号后只包含一个空格。
答案 0 :(得分:43)
使用正则表达式:
Pattern p = Pattern.compile(".*,\\s*(.*)");
Matcher m = p.matcher("abcd,fg;ijkl, cas");
if (m.find())
System.out.println(m.group(1));
输出:
cas
或者您可以使用简单的String
方法:
System.out.println(s.substring(s.lastIndexOf(",") + 1).trim());
System.out.println(s.substring(s.lastIndexOf(", ") + 2));
答案 1 :(得分:17)
也许是这样的:
String s = "abcd,fg;ijkl, cas";
String result = s.substring(s.lastIndexOf(',') + 1).trim();
也就是说,我将最后一个逗号后面的子字符串删除,然后移除周围的空格......
答案 2 :(得分:6)
你应该始终在Apache Commons中寻找这类问题的答案......并且每个版本都应该包含基本的答案。最合适的(不使用正则表达式)是这样的:
StringUtils.substringAfterLast(String str, String separator)
但是如果你真的想因某些原因使用正则表达式,你可能想要使用几种方法,例如。
String removeAll(String text, String regex)
或
String removeFirst(String text, String regex)
有趣的是,你可以通过这样做得到你想要的东西(依靠贪婪的量词):
StringUtils.removeFirst( myString, ".*," );
StringUtils是apache commons-lang3的一部分。
除了其他任何事情之外,没有必要重新发明轮子。但我至少可以想到其他两个优点:
PS没有什么可以阻止你查看源代码来检查方法实际上做了什么。通常他们很容易理解。
答案 3 :(得分:1)
你可以试试这个:
public static void main(String[] args) {
String s = " abcd,fg;ijkl, cas";
String[] words = s.split(",");
System.out.println(words[words.length-1].trim());
}
答案 4 :(得分:1)
只有一个空格:
String[] aux = theInputString.split(",\\s");
string result = aux[aux.length-1];
0到n个空格:
String[] aux = theInputString.split(",\\s*");
string result = aux[aux.length-1];
答案 5 :(得分:0)
以下内容如何:
String a = "abcd,fg;ijkl, cas";
String[] result = a.split(",[ ]*");
String expectedResult = result[result.length - 1]);
答案 6 :(得分:0)
还有一个:)
String s = "abcd,fg;ijkl, cas";
String result = s.replaceAll(".*, ", "");
答案 7 :(得分:0)
我用答案来解决我的问题,只需要从路径中提取文件名,
String s = "C:\\\\Users\\\\Blue Tag\\\\Files\\\\Upload\\\\samplejpg.jpg"; String result = s.substring(s.lastIndexOf('\\') + 1).trim();
答案 8 :(得分:-1)
str.split(",");
然后
str.trim()