如下的字符串
Grance T\"om "Bob Steave" Lindy "Su San" "Tom's Feare" "Array\" Creater\""
现在求一正则表达式能匹配出
Grance
T"om
Bob Steave
Lindy
Su San
Tom's Feare
Array" Creater"
就是说能匹配上没一段话中的所有的子字符串
子字符串包括 Grance 这样的单词
用( "" )包裹起来的字符串 "Bob Steave"
包含转义符的字符串 T"om
用( "" ) 包裹并包含转义符的字符串 Array" Creater"
单一的正则表达式不行,需要两个,第一个将你的引号分割的内容替换成 | 分割的,得到一个新的正则表达式
第二次用这个正则表达式和下面哪个比较。
楼主表述不是很清晰啊 可以把能变的部分用*或者× 表示整个你要的字符串
一个简单的方法,就是把引号中间的空格用其他字符比如#等替换,然后用空格做split分割得到数组,再把#用空格替换回来
用*或者× 表示整个字符串
将道理我连 var s = 后面的都不会写,是 \" 还是 \"
public static List getContentArray(String content){
List<String> contentList = new ArrayList<String>();
String contentItem="";
boolean hasQuote = false;
for(int i = 0; i<content.length() ;i++){
char item = content.charAt(i);
if(item == '"'){
if(hasQuote){ // 如果当前引号前面有引号
hasQuote = false;
if(!contentItem.equals("")){
contentList.add(contentItem);
contentItem = "";
}
}else{
hasQuote = true;
}
}else if(item == '\\'){
i++;
contentItem += content.charAt(i);
}else if(item == ' '){
if(hasQuote){
contentItem += item;
}else{
if(!contentItem.equals("")){
contentList.add(contentItem);
contentItem = "";
}
}
}else{
contentItem += item;
}
}
return contentList;
}