仅当同时统计了负前瞻和负前瞻时,才使用java拆分字符串
您好,我来到了this question,作者想在那里转换字符串:
exampleString = "2 Marine Cargo 14,642 10,528 Denver Factory North 16,016 more text 8,609 argA 2,106 argB"
进入一个数组/列表,该数组/列表与以下内容类似:
String[] resultArray = {"2", "Marine Cargo", "14,642", "10,528", "Denver Factory North", "16,016",
"more text", "8,609", "argA", "2,106", "argB"};
因此,数字部分(带或不带逗号)被视为元素
纯阿尔法序列(被无、一个或多个空间分割)被视为一个元素
这可以通过匹配组来实现
或者在字符串的前一部分和下一部分都不是alpha序列的空间上进行拆分。我很好奇后者是否可能。
我认为部分工作应该以消极的前瞻性来完成:
\s+(?![A-Za-z]+)
然后以消极的眼光离开
(?<![a-zA-Z])\s+
我希望以这样一种方式组合这两个语句:如果空格序列前后的部分都是alpha,那么它只会不匹配,因此您可以将多个单词链接在一起,而不会在它们之间拆分。我在这个主题上找到了另一个question,但我无法对这个特定案例进行反向工程。这可能吗
# 1 楼答案
你可以用
见regex demo
详细信息
(?<=\d)\s+(?=[a-zA-Z])
-1+左边有一个数字,右边有一个字母的空白|
-或(?<=[a-zA-Z])\s+(?=\d)
-1+左边有字母,右边有数字的空白|
-或(?<=\d)\s+(?=\d)
-1+左右各有一个数字的空格李>Java demo:
输出: