Python Regex匹配姓氏

时间:2015-11-24 11:05:06

标签: python regex

我将一些PHP代码转换为python。 php代码具有以下内容,用于匹配字符串中的姓氏:

 preg_match("/([^ ]*) *$/",$c['name'],$r);

似乎只匹配字符串中的最后一个字。

想要转换它,我认为以下会这样做:

 r = re.match('([\S]+)$', c['name'])

我认为应该在字符串结尾之前匹配任何非空格字符。逻辑是$匹配字符串的结尾,([\S]+)在字符串结尾之前匹配任何非空格字符一次或多次。然而,这对我来说并不起作用(尽管像pythex.org这样的网站建议应该这样做。)

我设法使用以下方法让它工作,但我想知道为什么上面的正则表达式不起作用,我怀疑它与反捕获有关但是我和#39;我不太熟悉它是如何工作的。为了测试我只是使用c [' name'] =' John Doe'

 r = re.match('(?:.*\s)*([\S]+)', c['name'])

(在上面的正则表达式中,(?:.*\s)是一个非捕获组,它匹配重复的字符,后跟一个类似空格的字符0次或更多次。然后捕获任何出现的非空格字符或者更多次。)

感谢。

0 个答案:

没有答案