从Mr. | Mrs.开始提取名称的正则表达式

时间:2014-11-25 06:58:11

标签: python regex findall

我正在尝试使用正则表达式来识别以

开头的名称
Mr.|Mrs.

例如

Mr. A, Mrs. B.

我尝试了几个表达式。这些正则表达式在pythonregex.com的在线工具上进行了检查。使用的测试字符串是:

"hey where is Mr A how are u Mrs. B tt`"

提到的输出是Python的findall()函数,即

regex.findall(string)

regex的各自输出低于。{/ p>

Mr.|Mrs. [a-zA-Z]+  o/p-[u'Mr ', u'Mrs']

为什么A和B没有与先生和夫人一同出现?

[Mr.|Mrs.]+ [a-zA-Z]+ o/p-[u's Mr', u'. B']

为什么要先与先生而不是A?

我尝试了更多组合,但这些令人困惑,所以这里是他们。对于名称部分,我知道正则表达式必须涵盖更多条件,但是从基本开始。

2 个答案:

答案 0 :(得分:3)

如下所示更改正则表达式

(?:Mr\.|Mrs\.) [a-zA-Z]+

DEMO

  1. 您需要将Mr\.Mrs\.放入非捕获或捕获组中,以便|(OR)适用于组本身。
  2. 您必须在正则表达式中转义点以匹配文字点,否则它将匹配任何字符。 .是正则表达式中的一个特殊元字符,它匹配除换行符之外的任何字符。
  3. 更短的一个,

    Mrs?\. [a-zA-Z]+
    
    上面的

    ?量词使前一个字符s成为可选字符。

答案 1 :(得分:0)

有一个用于解析人名的python库:

https://github.com/derek73/python-nameparser

比编写自己的正则表达式要好得多。