正则表达式匹配.(句号标记句子结束)但不是先生(如霍普金斯先生) [英] Regex to match . (periods marking end of sentences) but not Mr. (as in Mr. Hopkins)

查看:32
本文介绍了正则表达式匹配.(句号标记句子结束)但不是先生(如霍普金斯先生)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将一个文本文件解析成以句号结尾的句子,但像霍普金斯先生这样的名字在匹配句号时会产生误报.

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

作为奖励,我也在使用!找到句子的结尾,所以我当前的正则表达式是/(!/./并且我希望得到一个包含我的 !'s 的答案.

解决方案

使用否定背后

一>.

(?

仅当句点不在 MrMrsDrMs 之后时才匹配句点

<代码>//输出:这是某人先生和某人夫人他们是来见Dr.SomeoneElse的

I'm trying to parse a text file into sentences ending in periods, but names like Mr. Hopkins are throwing false alarms on matching for periods.

What regex identifies "." but not "Mr."

For bonus, I'm also using ! to find end of sentences, so my current Regex is /(!/./ and I'd love an answer that incorporates my !'s too.

解决方案

Use negative look behind.

(?<!Mr|Mrs|Dr|Ms)\.

This will match a period only if it does not come after Mr, Mrs, Dr or 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

这篇关于正则表达式匹配.(句号标记句子结束)但不是先生(如霍普金斯先生)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆