Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于提取以Mr.| Mrs.开头的名称的正则表达式_Python_Regex_Findall - Fatal编程技术网

Python 用于提取以Mr.| Mrs.开头的名称的正则表达式

Python 用于提取以Mr.| Mrs.开头的名称的正则表达式,python,regex,findall,Python,Regex,Findall,我试图编写正则表达式来识别以 Mr.|Mrs. 比如说 Mr. A, Mrs. B. 我试过几种表达方式。这些正则表达式是在的在线工具上检查的。使用的测试字符串是: "hey where is Mr A how are u Mrs. B tt`" 提到的输出是Python的findall()函数的输出,即 regex.findall(string) 下面是它们与regex的各自输出 Mr.|Mrs. [a-zA-Z]+ o/p-[u'Mr ', u'Mrs'] 为什么A和B没有和先生

我试图编写正则表达式来识别以

Mr.|Mrs.
比如说

Mr. A, Mrs. B.
我试过几种表达方式。这些正则表达式是在的在线工具上检查的。使用的测试字符串是:

"hey where is Mr A how are u Mrs. B tt`"
提到的输出是Python的
findall()
函数的输出,即

regex.findall(string)
下面是它们与
regex
的各自输出

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']
为什么s和先生而不是A一起来


我尝试了更多的组合,但这些组合令人困惑,所以它们就在这里。对于名称部分,我知道regex必须涵盖更多的条件,但它是从basic开始的。

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


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

像下面这样更改正则表达式

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

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

    Mrs?\. [a-zA-Z]+
    

    上述量词将前面的字符
    s
    作为可选字符。

    [Mr.| Mrs.]+
    完全错误。dot在正则表达式中有特殊含义。转义
    \。
    更好地使用
    Mrs?\。
    预期的输出是什么?您键入的测试字符串是否正确?您的Mr A在测试字符串中没有点。谢谢。这是很有帮助的。如果这有帮助的话,请接受。我也在学习其他语言。但谢谢你的建议。:)