gpt4 book ai didi

使用正则表达式前瞻进行Java分割 - 字符后面没有字符

转载 作者:行者123 更新时间:2023-11-30 02:52:32 24 4
gpt4 key购买 nike

我需要将字符串拆分为子字符串,以便将它们排序为带引号和不带引号的字符串。单引号字符用作分隔符,两个单引号表示转义序列,意味着它们不得用于拆分。

例如:

"111 '222''22' 3333"

应拆分为

"111", "222''22", "3333"

无论有没有空格。

所以,我写了下面的代码,但它不起作用。尝试使用 "\\'(?<!\\')" 进行回顾以及,但没有成功。请帮忙

    String rgxSplit="\\'(?!\\')";
String text="";
Scanner s=new Scanner(System.in);

System.out.println("\""+rgxSplit+"\"");
text=s.nextLine();
while(!text.equals(""))
{
String [] splitted=text.split(rgxSplit);
for(int i=0;i<splitted.length;i++)
{
if(i%2==0)
{
System.out.println("+" + splitted[i]);
}
else
{
System.out.println("-" + splitted[i]);
}
}
text=s.nextLine();
}

输出:

$ java ParseTest
"\'(?!\')"
111 '222''22' 3333
+111
-222'
+22
- 3333

最佳答案

这应该在单引号上拆分(当它不是双引号时),并且在连续三个的情况下,它将对前两个进行分组,并在第三个上进行拆分。

String [] splitted=text.split("(?<!') *' *(?!')|(?<='') *' *");

关于使用正则表达式前瞻进行Java分割 - 字符后面没有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38202301/

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