我有一个JTextArea,我想在其中替换所有句号而没有旁边的空格,例如"这是一个句子。这是另一个C.O.D句子。这是另一个C.A.T. 。句子"到"这是一个句子。这是另一个C.O.D句子。这是另一个C.A.T.句。&#34 ;.但是我不想要缩写或浮点数来获得额外的空格,例如#34;这是C.A.T.漂浮5.5"不应成为"这是C. A. T. float 5. 5"!我正在使用string.replaceAll("。","。"),这不足以证明这一点。
答案 0 :(得分:1)
保持简单,没有负面的后视等等:
s = s.replaceAll("([^A-Z0-9.])\\.([^0-9 \t])", "$1. $2");
更换时间段:
答案 1 :(得分:0)
答案 2 :(得分:0)
(您应该编辑您的问题以明确说明您的要求,例如缩写的处理)
您可以将(?<!\b[A-Z])\.(?!\d)
替换为.<space>
示范:https://regex101.com/r/g1g7Yg/1
说明:
(?<! ) negative look-behind group
\b[A-Z] word boundary following by one uppercase character
(i.e. one upper case character)
\. a dot
(?!\d) negative look-ahead group, of single digit
这基本上意味着,如果一个点前面没有单个大写字符,并且后面没有数字
,则替换一个点。仍然存在一些不会取代Hello world.1 apple 1 day
的缺陷。如果您了解上述正则表达式,那么更改正则表达式以解决此问题并不困难。