数字后的Java正则表达式拆分字符串[重复]

Posted

技术标签:

【中文标题】数字后的Java正则表达式拆分字符串[重复]【英文标题】:Java regex split string after number [duplicate] 【发布时间】:2014-08-17 09:48:49 【问题描述】:

抱歉,又是一个正则表达式问题!我有一个长度未知的字符串,其中包含以下模式:

"abc1defg2hijk23lmn19"

我需要拆分字符串以获得以下内容:

["abc1", "DefG2", "hiJk23", "lmn19"]

这很简单,我只需要每次在数字后拆分即可。该数字可以是任何非零数字。

我可以像这样进行积极的查找:

a.split("(?=\\d+)");

但是,这实际上是拆分数字而不是前面的字母组和数字。

我目前的尝试看起来像这样,但不起作用:

a.split("(?=[A-Za-z]+\\d+)");

【问题讨论】:

【参考方案1】:

所以输入

abc1defg2hijk23lmn19

你想找到标有|的地方

abc1|defg2|hijk23|lmn19

也就是说你想找到哪个地方

(?<=[0-9]) 之前有数字 和(?=[a-zA-Z])之后的字母

(我假设您熟悉look-around 机制)。

在这种情况下使用

split("(?<=[0-9])(?=[a-zA-Z])")

表示数字和字母字符之间的位置,例如1|a,其中| 代表这样的位置。


例子:

String data ="abc1defg2hijk23lmn19";
for (String s: data.split("(?<=[0-9])(?=[a-zA-Z])"))
    System.out.println(s);

输出:

abc1
defg2
hijk23
lmn19

【讨论】:

【参考方案2】:

您可以使用这个正则表达式 fpr 拆分:

(?<=\\d)(?=\\D)

Working Demo

【讨论】:

【参考方案3】:

用数字+空格替换数字,然后按空格分割。

a = a.replaceAll("[0-9]+","$1 ");
String[] b = a.split(" ");

如果您的字符串包含其他空格,也可以自定义它,方法是替换一个保证不会出现在您的字符串中的字符而不是空格。我最喜欢的是 (§)。

【讨论】:

以上是关于数字后的Java正则表达式拆分字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java - 正则表达式拆分输入文本但保留分隔符[重复]

通过正则表达式拆分字符串[重复]

在正则表达式中匹配字符串中的数字并转换为整数[重复]

C#正则表达式如何提取一段字符串中汉字后的数字

如何在Python中的正则表达式上拆分字符串[重复]

用于根据空格分隔符拆分文本的正则表达式 [重复]