给定一个由字母,数字和下划线组成的标识符foo,我想在最后一个整数上拆分字符串。例子:
"hello" => "hello", ""
"hello0" => "hello", "0"
"hello001" => "hello", "001"
"h123ello123" => "h123ello", "123"
我想我可以使用正则表达式来提取这些信息,但不确定这是最干净的方法(如果是,那表达式会是什么样子)。
答案 0 :(得分:4)
将此正则表达式用于Pattern.matcher(string)
方法调用:
^(.+?)(\d*)$
在Java中:
Pattern p = Pattern.compile( "^(.+?)(\\d*)$" );
然后使用matcher.group(1)
和matcher.group(2)
为您的匹配(在致电matcher.find()
后)
答案 1 :(得分:1)
您可以使用此拆分
split("(?=\\d*$)",2);
它将在before zero or more个数字(\\d
)之后拆分,其后面有字符串$
的结尾(这意味着它们位于字符串的末尾)。
参数2
会将结果数组的大小限制为两个元素,以防止此正则表达式在我标记为|
下面的地方进一步分割
hello0|0|1
因此结果为hello
001
。
<强> DEMO 强>