java - 逗号分开,除非逗号在两个数字之间
问题描述
考虑以下字符串。
String s = "va1, var2, aVar,var4, my_var55 DECIMAL(20,4)"
我之前只是.split(",")
为了获取变量令牌而没有考虑DECIMAL(20,4)
. 正则表达式应该有点像这样,如果逗号出现在两个数字之间,那么它不应该拆分。使用什么正则表达式,split()
以便我可以得到以下结果:
["var1", "var2", "aVar", "var4", "my_var55 DECIMAL(20,4)"]
PS 请注意,变量可以以数字结尾,但不能以数字开头。
解决方案
你可以使用
(?<=\S),(?!\h*\d)\h*
(?<=\S)
在逗号前声明一个非空白字符(?!\h*\d)
断言没有可选的水平空白字符后跟一个数字\h*
匹配 0+ 个水平空白字符
String s = "va1, var2, aVar,var4, my_var55 DECIMAL(20,4)";
for (String element : s.split("(?<=\\S),(?!\\h*\\d)\\h*"))
System.out.println(element);
输出
va1
var2
aVar
var4
my_var55 DECIMAL(20,4)
为了不在字符串末尾的逗号上拆分,您还可以断言逗号后跟一个单词 char 除了数字
(?<=\S),(?=\h*\b[^\W\d])
推荐阅读
- chart.js - 如何在工具提示回调afterBody中将逗号分隔的字符串分成新行?
- stata - 在stata矩阵中生成新列
- python - I am trying to call information on venues in a 500 m radius of a location via the foursquare API. I keep getting getting the error: [WinError 10061]
- javascript - How to use chartkick and vue in html?
- flutter - how to config ignore null check in release mode with flutter build
- reactjs - Cannot import image in NextJs project
- c# - Column order of a datagridview from SQL Server database in WinForms using C#
- rasa - RASA X: UnicodeEncodeError: 'charmap' codec can't encode character when run Rasa X
- anaconda - Conda virtual environment keeps using wrong version of Python
- java - How do I initialize an array of type String within a constructor in Java?