Ruby正则表达式:删除名字,留下姓氏

时间:2011-02-01 09:57:22

标签: ruby regex

我正在解析文本而我想忽略人们的名字。

示例(案例):

  • B.Obama =>奥巴马
  • B中。奥巴马=>奥巴马
  • B.奥巴马=>奥巴马

我设法写这个有效的Ruby正则表达式:

"B.Obama".gsub(/\p{L}+\.(\p{L}+)/, '\\1')

然而,它只解决了一个案例。此外,它不会检查,如果第一个字母是大写。

那么,结合所有这些情况的正则表达式应该如何?

详细信息:Ruby 1.92和UTF-8字符串。

2 个答案:

答案 0 :(得分:1)

我想了一点,我更喜欢这个:

/^(\w+)[ .,](.+$)/

这将捕获不同捕获组中的名字和姓氏 即

"Mark del cato".scan /^(\w+)[ .,](.+$)/

请参阅rubular例如:Rubular

或尝试

^[^ .]+

这将获取一行中的第一个单词。不是由点或空格分隔的。 希望它有所帮助,请参阅Rubular

上的示例

答案 1 :(得分:0)

尝试

(\w+)$

\w+匹配一个或多个“字”字符。

$是与字符串末尾匹配的零长度匹配。

你想从一段文字中提取第二个名字吗?这可能会非常困难。你能发一个文字摘录吗?