数字后的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正则表达式拆分字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章