我需要将字符串拆分为子句,以便将它们分类为引用而非引用的字符串。单引号字符用作分隔符,两个单引号表示转义序列,表示它们不应用于拆分。
例如:
"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
答案 0 :(得分:2)
这应该拆分为单引号(当它没有加倍时),并且在连续三次的情况下,它将对前两个进行分组,并将在第三个分开。
String [] splitted=text.split("(?<!') *' *(?!')|(?<='') *' *");
答案 1 :(得分:0)