使用regex/Java代码在空格上拆分忽略if内引号
我有两个字符串,如下所示。我想在空格上拆分这些字符串,但如果在引号中找到空格,则忽略空格使用regex/Java代码在空格上拆分忽略if内引号,java,regex,Java,Regex,我有两个字符串,如下所示。我想在空格上拆分这些字符串,但如果在引号中找到空格,则忽略空格 LA L'TL0BPC,C'ABC ' THIS IS COMMENT LA C'TL0PC',C'ABC ' THIS IS COMMENT MVC EBW000(4),=C'MPI ' THIS IS ANOTHER' CASE 我想把这些线像这样分开 LAL'TL0BPC,C'ABC'这是注释 LAC'TL0PC',C'ABC'此是注释 如何使用java正则表达式实现这
LA L'TL0BPC,C'ABC ' THIS IS COMMENT
LA C'TL0PC',C'ABC ' THIS IS COMMENT
MVC EBW000(4),=C'MPI ' THIS IS ANOTHER' CASE
我想把这些线像这样分开
LA
L'TL0BPC,C'ABC'
这
是
注释
LA
C'TL0PC',C'ABC'
此
是
注释
如何使用java正则表达式实现这一点……任何其他解决方案都是可以接受的
我试过这个:
String ODD_QT_REGEX="[ ]+(?=([^'']*'[^'']*')*[^'']*)";
String EVEN_QT_REGEX="[ ]+(?=([^'']*'[^'']*')*[^'']*$)";
但这并不能满足我的需要。您可以进行匹配而不是拆分。根据此
“[]+(?=([^']*'[^']*')*[^']*')进行拆分代码>正则表达式只有在输入有平衡引号时才可能
看来我解决了问题。和OP的正则表达式一样,但是这个正则表达式不会考虑撇号作为一个引号。下面的正则表达式将匹配一个或多个空格字符,后跟
\b'\b
撇号
|
或
“[^']”
单引号块
|
或
[^']
任何字符,但不是单引号
(?:\\b'\\b |'[^']*'.[^'])*
,零次或多次。然后,它必须紧跟着一个线锚的末端
代码:
String r = "LA L'TL0BPC,C'ABC ' THIS IS COMMENT";
String[] m = r.split("\\s+(?=(?:\\b'\\b|'[^']*'|[^'])*$)");
System.out.println(Arrays.toString(m));
[LA, L'TL0BPC,C'ABC ', THIS, IS, COMMENT]
或
更确切地说,您可以用lookarounds替换上述正则表达式中的\b
"\\s+(?=(?:(?<=[a-zA-Z])'(?=[A-Za-z])|'[^']*'|[^'])*$)"
你试过什么了吗?String ODD_QT_REGEX=“[]+(?=([^']*”[^']*)*[^']*”;字符串偶数_QT_REGEX=“[]+(?=([^']*'[^']*')*[^']*$)”;我试着用这两个…但它失败了…你为什么把它作为评论发布?你的尝试应该是你问题的一部分。所以使用选项把它放在那里。不平衡的报价把我甩了!进行一些测试…如果通过,我将接受您的ans…和+1作为解释…EMPAS870 EQU*>>>重新标记不合格循环的顶部..此行有任何可能的更正吗???在报价前不会在空格上拆分…没有,因为只有一个报价,并且不是撇号。MVC EBW000(4),=C'MPI'告诉EMQ4处理组件NRFN的此项也失败…请提供帮助。。。。。