gpt4 book ai didi

java - 如果使用正则表达式/Java 代码在引号内拆分空格忽略

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:10 25 4
gpt4 key购买 nike

我有两个如下所示的字符串..我想在空格上拆分这些字符串但如果在引号内找到空格则忽略空格....

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' THIS IS COMMENT

LA C'TL0PC',C'ABC' THIS IS 注释

如何使用 java regex 实现此目的....任何其他解决方案也是可以接受的..

我试过这个:

String ODD_QT_REGEX="[ ]+(?=([^'']*'[^'']*')*[^'']*)"; 
String EVEN_QT_REGEX="[ ]+(?=([^'']*'[^'']*')*[^'']*$)";

但这并不能满足我的需要。

最佳答案

您可以进行匹配而不是拆分。根据此 "[ ]+(?=([^'']*'[^'']*')*[^'']*)"; 正则表达式仅当您的输入有平衡引号。

看来我找到了问题所在。与操作的正则表达式相同,但此正则表达式不会将撇号视为单引号。下面的正则表达式将匹配一个或多个空格字符,后跟

  • \b'\b 一个撇号。
  • | 或者
  • '[^']' 单引号 block 。
  • | 或者
  • [^'] 任何字符,但不是单引号。
  • (?:\\b'\\b|'[^']*'|[^'])*,零次或多次。然后它后面必须跟一个行尾 anchor 。

代码:

String r = "LA    L'TL0BPC,C'ABC  '  THIS IS COMMENT";
String[] m = r.split("\\s+(?=(?:\\b'\\b|'[^']*'|[^'])*$)");
System.out.println(Arrays.toString(m));

对于更确切的情况,您可以将上述正则表达式中的 \b 替换为 lookarounds。

"\\s+(?=(?:(?<=[a-zA-Z])'(?=[A-Za-z])|'[^']*'|[^'])*$)"

输出:

[LA, L'TL0BPC,C'ABC  ', THIS, IS, COMMENT]

关于java - 如果使用正则表达式/Java 代码在引号内拆分空格忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28900791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com