【发布时间】:2011-10-30 22:34:26
【问题描述】:
我做了一个关于标点符号和正则表达式的问题,但它很混乱。
假设我有这个文本:
String text = "wor.d1, :word2. wo,rd3? word4!";
我正在这样做:
String parts[] = text.split(" ");
我有这个:
wor.d1, | :word2. | wor,d3? | word4!;
我需要做什么才能做到这一点?(将符号保留在边框上,但仅我指定:.,!?:,而不是全部)。
wor,d1 | , | : | word2 | . | wor,d3 | ? | word4 | !
更新
我使用这些正则表达式得到了一些不错的结果,但它在单词开头的所有标点符号拆分之前给出了一个空字符。
有没有办法在开始时不使用这个空字符?
这个正则表达式好不好,还是有更简单的方法?
public static final String PUNCTUATION_SEPARATOR =
"("
+ "("
+ "(?=^[\"'!?.,;:(){}\\[\\]]+)"
+ "|"
+ "(?<=^[\"'!?.,;:(){}\\[\\]]+)"
+ ")"
+ "|"
+ "("
+ "(?=[\"'!?.,;:(){}\\[\\]]+($|\n))"
+ "|"
+ "(?<=[\"'!?.,;:(){}\\[\\]]+($|\n))"
+ ")"
+ ")";
【问题讨论】:
标签: java regex separator punctuation