Java 逗号分隔,除非逗号位于两个数字之间

Java 逗号分隔,除非逗号位于两个数字之间,java,regex,Java,Regex,考虑以下字符串 String s=“va1,var2,aVar,var4,my_var55十进制(20,4)” 我之前只是使用.split(“,”来获取变量标记,而没有考虑十进制(20,4)。正则表达式应该是这样的,如果逗号出现在两个数字之间,那么它就不应该拆分。在split()中使用什么正则表达式,以便获得以下结果: [“var1”、“var2”、“aVar”、“var4”、“my_var55 DECIMAL(20,4)”] 请注意,变量可以以数字结尾,但不能以数字开头。您可以使用 Strin

考虑以下字符串

String s=“va1,var2,aVar,var4,my_var55十进制(20,4)”

我之前只是使用
.split(“,”
来获取变量标记,而没有考虑
十进制(20,4)
。正则表达式应该是这样的,如果逗号出现在两个数字之间,那么它就不应该拆分。在
split()
中使用什么正则表达式,以便获得以下结果:

[“var1”、“var2”、“aVar”、“var4”、“my_var55 DECIMAL(20,4)”]

请注意,变量可以以数字结尾,但不能以数字开头。

您可以使用

String[] result = s.split(",(?!\\d)\\s*");

详细信息

  • -逗号
  • (?!\d)
    -后面不紧跟数字
  • \s*
    -0个或多个空格字符
见a:

String s=“va1,var2,aVar,var4,my_var55 DECIMAL(20,4)”;
字符串[]结果=s.split(“,(?!\\d)\\s*”;
for(字符串x:结果){
系统输出println(x);
} 
输出:

va1
var2
aVar
var4
my_var55 DECIMAL(20,4)
你可以用

String[] result = s.split(",(?!\\d)\\s*");

详细信息

  • -逗号
  • (?!\d)
    -后面不紧跟数字
  • \s*
    -0个或多个空格字符
见a:

String s=“va1,var2,aVar,var4,my_var55 DECIMAL(20,4)”;
字符串[]结果=s.split(“,(?!\\d)\\s*”;
for(字符串x:结果){
系统输出println(x);
} 
输出:

va1
var2
aVar
var4
my_var55 DECIMAL(20,4)
你可以用

(?<=\S),(?!\h*\d)\h*
输出

va1
var2
aVar
var4
my_var55 DECIMAL(20,4)
为了不在字符串末尾的逗号上拆分,您还可以断言逗号后面除了数字之外还有一个单词char

(?<=\S),(?=\h*\b[^\W\d])
(?您可以使用

(?<=\S),(?!\h*\d)\h*
输出

va1
var2
aVar
var4
my_var55 DECIMAL(20,4)
为了不在字符串末尾的逗号上拆分,您还可以断言逗号后面除了数字之外还有一个单词char

(?<=\S),(?=\h*\b[^\W\d])
使用
(?使用
)?