如何使用正则表达式获取字符串中最后一个逗号后的内容?
例:
abcd,fg;ijkl, cas
Run Code Online (Sandbox Code Playgroud)
输出应该是 cas
注意:最后一个逗号和'c'字符之间还有一个空格,也需要删除.此模式在最后一个逗号后只包含一个空格.
dac*_*cwe 45
使用正则表达式:
Pattern p = Pattern.compile(".*,\\s*(.*)");
Matcher m = p.matcher("abcd,fg;ijkl, cas");
if (m.find())
System.out.println(m.group(1));
Run Code Online (Sandbox Code Playgroud)
输出:
cas
Run Code Online (Sandbox Code Playgroud)
或者你可以使用简单的String方法:
System.out.println(s.substring(s.lastIndexOf(",") + 1).trim());System.out.println(s.substring(s.lastIndexOf(", ") + 2));Mat*_*arz 24
也许是这样的:
String s = "abcd,fg;ijkl, cas";
String result = s.substring(s.lastIndexOf(',') + 1).trim();
Run Code Online (Sandbox Code Playgroud)
也就是说,我将最后一个逗号后面的子字符串删除,然后移除周围的空格......
你总是应该总是在Apache Commons中寻找这类问题的答案......每个构建都应该包含基本的问题.最合适的(不使用正则表达式)是这样的:
StringUtils.substringAfterLast(String str, String separator)
Run Code Online (Sandbox Code Playgroud)
但是如果你真的想因某种原因使用正则表达式,你可能想要使用几种方法,例如
String removeAll(String text, String regex)
Run Code Online (Sandbox Code Playgroud)
要么
String removeFirst(String text, String regex)
Run Code Online (Sandbox Code Playgroud)
有趣的是,你可以通过这样做得到你想要的东西(依靠贪婪的量词):
StringUtils.removeFirst( myString, ".*," );
Run Code Online (Sandbox Code Playgroud)
StringUtils是apache commons-lang3的一部分.
除了其他任何事情之外,没有必要重新发明轮子.但我可以想到至少2个其他优点:
PS没有什么可以阻止你查看源代码来检查方法实际上做了什么.通常他们很容易理解.
| 归档时间: |
|
| 查看次数: |
63829 次 |
| 最近记录: |