我有一个字符串,如"portal100common2055"
。需要帮助使用正则表达式在java中拆分字符串
我想分成两部分,第二部分应该只包含数字。
"portal200511sbet104"
将成为"portal200511sbet"
,"104"
能否请你帮我实现这一目标?
我有一个字符串,如"portal100common2055"
。需要帮助使用正则表达式在java中拆分字符串
我想分成两部分,第二部分应该只包含数字。
"portal200511sbet104"
将成为"portal200511sbet"
,"104"
能否请你帮我实现这一目标?
像这样:
Matcher m = Pattern.compile("^(.*?)(\\d+)$").matcher(args[0]);
if(m.find()) {
String prefix = m.group(1);
String digits = m.group(2);
System.out.println("Prefix is \""+prefix+"\"");
System.out.println("Trailing digits are \""+digits+"\"");
} else {
System.out.println("Does not match");
}
请参阅我的1行解决方案:) – Bohemian 2011-05-25 07:37:30
String[] parts = input.split("(?<=\\D)(?=\\d+$)");
if (parts.length < 2) throw new IllegalArgumentException("Input does not end with numbers: " + input);
String head = parts[0];
String numericTail = parts[1];
这更优雅的解决方案使用的背后和的看向前看的正则表达式的功能。
说明:
(?<=\\D)
意味着在当前点,确保前一字符的非数字结束(非数字表示为\D
)(?=\\d+$)
装置T的当前点,确保只有数字被发现的输入端(数字表示为\d
)这只会在需要的点真正你想要分割的INP ut
如果你只想要最后四个字符为什么不是子字符串? – 2011-05-25 06:44:21
substring我可以做,但我不知道天气我可以只有最后4个字符作为numeric.it可以是最后5个字符或3下面的解决方案工作正常。 – Raja 2011-05-25 07:04:27