Javascript Regex首字母缩略词匹配和拼写更正
我正在尝试修复一些拼写错误,其中一个常见错误是句子之间缺少空格:Javascript Regex首字母缩略词匹配和拼写更正,javascript,regex,Javascript,Regex,我正在尝试修复一些拼写错误,其中一个常见错误是句子之间缺少空格:“这是一个句子。这里是另一个句子。”我想匹配并添加一个空格,因此我编写了以下正则表达式: var re = /\.(?=[A-Z]|\()/g; var res = str.replace(re, '. '); 这涵盖了挤在一起的句子,以及另一个涉及括号的打字错误,这对这个问题并不重要 问题是出现了一些首字母缩略词,它们也被匹配和(错误地)替换。示例:“美国是一个国家”替换为“美国是一个国家”。我试图阻止这些首字母缩略词被匹配。我
“这是一个句子。这里是另一个句子。”
我想匹配并添加一个空格,因此我编写了以下正则表达式:
var re = /\.(?=[A-Z]|\()/g;
var res = str.replace(re, '. ');
这涵盖了挤在一起的句子,以及另一个涉及括号的打字错误,这对这个问题并不重要
问题是出现了一些首字母缩略词,它们也被匹配和(错误地)替换。示例:“美国是一个国家”替换为“美国是一个国家”。我试图阻止这些首字母缩略词被匹配。我想也许我想要的是“回头看”,但javascript不支持这一点
你知道如何解决这个问题吗?这似乎有效:
var str = "A sentance.Another sentance with an A.C.R.O.N.Y.M.Yet another sentence."
var re = /\.(?=[A-Z][^.]|\()/g;
var res = str.replace(re, '. ');
res // => "A sentance. Another sentance with an A.C.R.O.N.Y.M. Yet another sentence."
你可以试试:
\.(?=[A-Z]|\()(?![A-Z]\.)
这确保了“.”后面的继续字符不包括大写字母和“.”regex不是为语言上下文分析而设计的。您需要为
RegExp
指定一个唯一的分隔符!“后退一步”并在“
之前匹配一个字符,然后在替换时将其放回:var res=str.replace(/([a-z])\。(?=[a-z]\()/g.replace(re,$1.);
。当然,这只有在“句子”中才有效始终以小写字母结尾。有些情况下,你会发现,由于首字母缩略词中句点的定义,不适用于正则表达式。你真的需要一些定界符来捕捉这类内容。这有点奇怪,因为你用的是美语句子,这很简单。。.我该怎么说呢?…从句法上说是多样的。