Java正则表达式,如何在点、空格上拆分,并将引用的单词保持在一起

Java正则表达式,如何在点、空格上拆分,并将引用的单词保持在一起,java,regex,split,Java,Regex,Split,我想把我的字符串分割成一个点,一个空格,并把引用的单词放在一起。比如说我有: This "majestic world" is truly.awesome 它应导致: This majestic world is truly awesome 现在,到目前为止我使用的正则表达式只是myString.split(“\\.\124;”)。我知道 (“[^\\s\”]+\”([^\“]*)\“\”([^']*)”)”应该在空白处拆分,并将引用的单词保留在一起。现在,我不知道如何在这里加入点逃逸,坦

我想把我的字符串分割成一个点,一个空格,并把引用的单词放在一起。比如说我有:

This "majestic world" is truly.awesome
它应导致:

This
majestic world
is
truly
awesome 
现在,到目前为止我使用的正则表达式只是
myString.split(“\\.\124;”)
。我知道
(“[^\\s\”]+\”([^\“]*)\“\”([^']*)”)”
应该在空白处拆分,并将引用的单词保留在一起。现在,我不知道如何在这里加入点逃逸,坦白地说,正则表达式的意义相当于双手绑在背后翻动汉堡

编辑:

以下是我想要一个更好的正则表达式的原因,因为要使事情保持在引号内,我必须做到以下几点:

if(listOfLists.get(i).get(j).equalsIgnoreCase("INSERT")) {
                        String insertInto = "";
                        boolean buildingString = false;
                        int k = 0;
                        while(k < listOfLists.get(i).size()) {
                            if(listOfLists.get(i).get(k).endsWith("\"")) {
                                buildingString = false;
                                insertInto += listOfLists.get(i).get(k);
                                break;
                            }
                            if(listOfLists.get(i).get(k).startsWith("\"") || buildingString) {
                                buildingString = true;
                                insertInto += listOfLists.get(i).get(k) + " ";
                            }
                            k++;
                        }
                        System.out.println("k is: " + k + " message is: " + insertInto);
                        dbCommands.appendToTable(listOfLists.get(i).get(k + 2), listOfLists.get(i).get(k + 3), insertInto);
if(listofList.get(i).get(j).equalsIgnoreCase(“插入”)){
字符串insertInto=“”;
布尔buildingString=false;
int k=0;
而(k
其中,我正在分析的文件具有如下命令:


在college中插入“John Smith”。学生们

此正则表达式将为您提供大部分方法,但您仍需要在第二步中删除引号:

(\".*\"|[^\\s\\.]+)
即:


我建议如果你不理解正则表达式,就不要使用它。使用可读、可维护和可扩展的东西。就像我理解它背后的概念一样,但这更像是关于DFA和NFA的更高级抽象正则表达式,实际上生成我自己的正则表达式对我来说是相当复杂的。因为我觉得如果我使用正则表达式,我会有一个m这比用奇怪的方式来匹配代码要容易得多。不确定,但我在这个漂亮的网站上尝试了一下。非常感谢,你能解释一下“^”和“s”代表什么吗?我想说*代表空白,但我知道正则表达式(在更高的层次上)*表示任意。至于^s和s的含义,我只能猜测s表示字符串?方括号表达式与其中定义的字符匹配。插入符号“^”字符有效地否定了该表达式。A“\\s”匹配空白字符“\\”匹配文字句点。因此“[^\\s\\.]+”匹配一个或多个非空白字符和非句点字符。
Matcher m = Pattern.compile("(\".*\"|[^\\s\\.]+)")
        .matcher("This \"majestic world\" is truly.awesome");
while (m.find()){
    System.out.println(m.group(1).replaceAll("\"", ""));
}