正则表达式匹配最后一个没有分隔符的项目

时间:2010-03-16 00:02:13

标签: regex

我有一串像这样的名字“J. Smith; B. Jones; O。Henry” 我可以用

匹配除姓氏之外的所有名字
\w+.*?;

是否有正则表达式匹配所有名称,包括最后一个名称?

3 个答案:

答案 0 :(得分:5)

这是在这里:

\w+.*?(?:;|$)

答案 1 :(得分:4)

不必使用正则表达式。好像在你的名字之间,你有“;”作为分隔符,所以用它来分割字符串。例如Python

>>> mystring = "J. Smith; B. Jones; O. Henry"
>>> mystring.split(";")
['J. Smith', ' B. Jones', ' O. Henry']

答案 2 :(得分:2)

如果你想要一个正则表达式,这很简单:

\w[^;]+

Perl示例:

@names = "J. Smith; B. Jones; O. Henry" =~ /\w[^;]+/g;
# ("J. Smith","B. Jones","O. Henry")

或者,如果您想要拆分,我会使用\s*;\s*\s*删除空格):

@names = split /\s*;\s*/, "J. Smith; B. Jones; O. Henry";
# ("J. Smith","B. Jones","O. Henry")