[英]java Regex - split but ignore text inside quotes?
仅使用正则表达式方法,方法String.replaceAll和ArrayList如何将字符串拆分为标记,但忽略引号内存在的定界符? 分隔符是不是字母数字或带引号的文本的任何字符
例如:字符串:
你好^世界'这*有两个令牌'
应该输出:
- 你好
- worldthis *有两个令牌
我知道已经有一个该死的好答案,但是我想添加另一个基于正则表达式的方法(我可以说更简单),使用任何非字母数字分隔符来拆分给定文本,该分隔符不在使用单引号的情况下
正则表达式:
/(?=(([^']+'){2})*[^']*$)[^a-zA-Z\\d]+/
这基本上意味着如果在非字母数字文本后跟偶数个单引号 ,则匹配非字母数字文本;换句话说,如果非字母数字文本在单引号之外,则匹配非字母数字文本。
码:
String string = "hello^world'this*has two tokens'#2ndToken";
System.out.println(Arrays.toString(
string.split("(?=(([^']+'){2})*[^']*$)[^a-zA-Z\\d]+"))
);
输出:
[hello, world'this*has two tokens', 2ndToken]
演示:
您无法以任何合理的方式。 您提出了一个问题,即正则表达式不擅长。
请勿为此使用正则表达式。 它不会工作。 使用/编写解析器。
您应该使用正确的工具完成正确的任务。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.