正则表达式匹配.(标记句末的句号)但不是先生(如霍普金斯先生)

Jos*_*ews 10 regex regex-negation

我正在尝试将一个文本文件解析为以句点结尾的句子,但像霍普金斯先生这样的名字会在匹配期间抛出错误警报.

正则表达式标识"." 但不是"先生"

为奖金,我也在使用!找到句子的结尾,所以我现在的正则表达式是/(!/./我想要一个包含我的答案的答案.

Ama*_*osh 12

使用负面看后面.

(?<!Mr|Mrs|Dr|Ms)\.
Run Code Online (Sandbox Code Playgroud)

这将匹配一个时期只有当不来之后Mr,Mrs,Dr或者Ms

<?
   $str = "This is Mr. Someone and Mrs. Somebody. They are here to meet Dr. SomeoneElse.";
   $str = preg_replace("/(?<!Mr|Mrs|Dr|Ms)\\./", "\n", $str);
   echo($str);
?>
//outputs:
This is Mr. Someone and Mrs. Somebody
 They are here to meet Dr. SomeoneElse
Run Code Online (Sandbox Code Playgroud)

  • 我认识一个住在林肯博士的人我住在艾伯特路. (4认同)

bma*_*ies 6

使用任何简单的机制都无法做到这一点.它毫无希望地模糊不清.句子可以用缩写结尾,在这些情况下,它们不是用两个句子写的.

请参阅Unicode TR29.另请参阅ICU开源库,其中包括一个基本实现.