我想使用空格分割字符串,但不考虑双引号或单引号。
我尝试使用Regex在没有单引号或双引号引起来的情况下使用空格分割字符串,但在某些情况下失败。
Input : It is a "beautiful day"'but i' cannot "see it"
并且输出应该是
It
is
a
"beautiful day"'but i'
cannot
"see it"
上面链接中的正则表达式导致
It
is
a
"beautiful day"
'but i'
cannot
"see it"
我要"beautiful day"'but i'
在一行中。
有人可以帮助我编写正确的正则表达式吗?
此正则表达式通过了您的测试:
" (?=(([^'\"]*['\"]){2})*[^'\"]*$)"
它在一个空格上分割,但仅当该空格不在引号内时,才通过使用前瞻性断言该空格后的引号是偶数来进行测试。
在某些情况下,这是行不通的,但是如果您输入的内容“格式正确”(即,引号是平衡的),这将对您有用。如果引号不平衡,它仍然可行-您需要使用两次先行搜索-每种引号类型都使用一个。
这是一些测试代码:
String s = "It is a \"beautiful day\"'but i' cannot \"see it\"";
String[] parts = s.split(" (?=(([^'\"]*['\"]){2})*[^'\"]*$)");
for (String part : parts)
System.out.println(part);
输出:
It
is
a
"beautiful day"'but i'
cannot
"see it"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句