我有一根这样的弦
length 10 cm width 2 cm depth 0.5 cm / length 10 cm width 2 depth 0.5 cm
字符串
我想得到的输出是
length 10 cm
width 2 cm / width 2
depth 0.5 cm
型
我尝试了这个
public static void main(String []args) {
String s = "length 10 cm width 2 cm depth 0.5 cm";
String[] tok = s.split("(?<=\\d)\\s");
for(int i=0; i< tok.length; i++) {
System.out.println(tok[i]);
}
}
型
它返回:
length 10
cm width 2
cm depth 0.5
cm
型
3条答案
按热度按时间fhg3lkii1#
试试下面的匹配模式。
字符串
输出
型
pzfprimi2#
您需要更改正则表达式以正确匹配正确的结果:
下面是一个示例代码,它随您所需的输出一起提供
字符串
输出将是:
型
要获得有关正则表达式的更多信息,您可以使用Regex 101 Site并将字符串和正则表达式放在一起以获得解释。
更新1
为了实现动态解决方案,下面的代码可以帮助你在这种情况下,你需要确定单位以及。我假设你有
cm
和mm
更多的单位,你需要添加到正则表达式。型
输出将是:
型
jtoj6r0c3#
如果您还有其他数据,则拆分可能会导致意外结果,但对于示例,如果您不想保留
depth 0.5 cm / length 10 cm
,则可以使用用途:字符串
Regex demo
拆分后的输出:
型
如果您不想保留
/
并将所有单元放在单独的行上:型
图案吻合
(?<=\bcm)
正向后查找,Assert左边是单词cm
\h[\h/]*
至少匹配一个水平空白字符,后跟可选的水平空白字符或/
|
或(?<=\d)
Assert左边是一个数字\h+
匹配1个或多个水平空格字符(?!cm\b)
Assert单词cm
不在右边Regex demo的
例如
型
输出
型
但是匹配将允许更精确的匹配,您可以根据需要调整以匹配更多的单位类型。
注意在Java中对反斜杠进行双转义。
型
Regex demo的|Java demo的