java中基于特殊字符和括号的段落拆分

java中基于特殊字符和括号的段落拆分,java,regex,pattern-matching,paragraph,Java,Regex,Pattern Matching,Paragraph,我试着把一个小段落分成几个句子,这些句子是基于句号逗号和副词,比如(){}和[]。如何使用Java正则表达式来做这样的事情 例如,如果我有这样一段话 到目前为止,我喜欢这辆车,开起来很有趣。作为一名日常司机,它工作得非常好,并且有一些良好的动力,尽管它离跑车还很远。我对这辆车有一个主要问题。沃尔沃在挡风玻璃上安装了加热元件(每几毫米就有一根小电线)。晚上,所有灯光都会从这些电线上反射,使灯光模糊。这是一个巨大的安全问题,非常烦人。单是因为这个问题,我不确定我是否会保留这辆车很长时间。虽然有一个加

我试着把一个小段落分成几个句子,这些句子是基于句号逗号和副词,比如(){}和[]。如何使用Java正则表达式来做这样的事情

例如,如果我有这样一段话

到目前为止,我喜欢这辆车,开起来很有趣。作为一名日常司机,它工作得非常好,并且有一些良好的动力,尽管它离跑车还很远。我对这辆车有一个主要问题。沃尔沃在挡风玻璃上安装了加热元件(每几毫米就有一根小电线)。晚上,所有灯光都会从这些电线上反射,使灯光模糊。这是一个巨大的安全问题,非常烦人。单是因为这个问题,我不确定我是否会保留这辆车很长时间。虽然有一个加热的方向盘很好,但如果你买这辆车,就不要买空调套餐

我的分段结果应该是

到目前为止,我喜欢这辆车,开起来很有趣

作为一名日常司机,它工作得非常好,并且有一些良好的动力

虽然它离跑车还很远

我有一个主要的问题

沃尔沃在挡风玻璃上安装了加热元件

每几毫米就有一根小电线

晚上,所有灯光都会从这些电线上反射,使灯光模糊

这是一个巨大的安全问题,非常烦人

仅仅因为这个问题

我不确定我是否会把这辆车保留很长时间

虽然有一个加热的方向盘很好

如果你买这辆车,跳过气候套餐


您可以尝试以下方法:

String str = "...";
str = str.replaceAll(" ?[,.()]+ ?", System.getProperty("line.separator"));
如果需要阵列,请使用以下命令:

    String[] strArr = str.split(" ?[,.()]+ ?");
    for(String strr : strArr)
    {
        System.out.println(strr);
    }
收益率:

So far I like this car and it is fun to drive
It works very well as a daily driver and has some good kick
although it is still far from a sports car
I have one major issue with this car
Volvo has built heating elements into the windshield
small wires every few millimeters
At night all lights reflect off of these wires and makes the lights blurry
It is a huge safety issue and is extremely annoying
Due to this issue alone
I am not sure if I will keep this car very long
Although it is nice to have a heated steering wheel
skip the Climate Package if you buy this car
这应该起作用:

String reg = "\\ ?[.,()\\[\\]{}]+\\ ?";
String[] res = str.split(reg);
试试这个正则表达式:

 \s*[.,()\[\]{}]+\s*

示例代码 输出
到目前为止,我喜欢这辆车,开起来很有趣
作为一名日常司机,它工作得非常好,并且有一些良好的动力
虽然它离跑车还很远
这辆车有一个主要问题
沃尔沃在挡风玻璃上安装了加热元件
每几毫米就有一根小电线
晚上,所有灯光都会从这些电线上反射,使灯光模糊
这是一个巨大的安全问题,非常烦人
仅仅因为这个问题
我不确定我是否会把这辆车保留很长时间
虽然有一个加热的方向盘很好
如果你买这辆车,跳过气候套餐

请解释这个简单编程问题的哪一部分给您带来了困难?如果答案是“全部”,那么我建议您阅读和/或所有这些,您不能使用正则表达式,因为您的语法显然是上下文无关语法。想象一句话“你好(美丽的世界)”。解析树是什么?那是[‘你好’、‘美丽’、‘确实’、‘世界’还是[‘你好’、‘美丽世界’、‘确实’?或者只是[‘你好’、‘美丽的世界’?正则表达式不会构造自动机来检查您的解析有多深,这将不允许您对标记(如()、[]等)进行配对。
public class Main {
    public static void main(String[] args) {
        String str = "So far I like this car and it is fun to drive. It works very well as a daily driver and has some good kick, although it is still far from a sports car. I have one major issue with this car.Volvo has built heating elements into the windshield (small wires every few millimeters). At night all lights reflect off of these wires and makes the lights blurry. It is a huge safety issue and is extremely annoying. Due to this issue alone, I am not sure if I will keep this car very long. Although it is nice to have a heated steering wheel, skip the Climate Package if you buy this car.";

        String[] output = str.split("\\s*[.,()\\[\\]{}]+\\s*");

        for (String s : output) {
            System.out.println(s + System.getProperty("line.separator"));
        }
    }
}