如何使用数字轴将字符串拆分为两个?

时间:2018-05-15 03:13:43

标签: java regex

我试图使用正则表达式将字符串分成两部分,但显然,正则表达式是贪婪的,因此在第一组中它会增加一点点。

字符串示例:"这是一个短语22ext"

期望的结果:

  • 第0组="这是一个短语"

  • 第1组=" 22"

  • " ex" t废弃。

我使用以下Regex(在java中):

[^0-9]*([0-9]+).*

适用于第1组,但在第0组中,它包含" 22ext"同样。

我该如何避免呢?

1 个答案:

答案 0 :(得分:2)

你的正则表达式没有提供所需的输出,因为你没有在组中添加它的第一部分,所以你的正则表达式只有一个组 1 。您可以使用以下方法解决此问题:

([^0-9]*)([0-9]+).*

然后你可以在"第1组"中找到你的两个字符串。和"第2组"。请注意"Group 0" is the full match

Here's a demo

更好更短的方法是使用以下正则表达式:

(\D*)(\d+)

哪个匹配第一个组中的任何非数字字符(直到它到达第一个数字字符)然后它匹配即将出现的数字字符,包括所有Unicode数字 in第二组。

您可以决定是否在最后加入.*

Try it online

参考文献:

1 "第0组"是整个模式的完全匹配,因此您需要使用" Group 1"和"第2组"。