我有一串像这样的名字“J. Smith; B. Jones; O。Henry” 我可以用
匹配除姓氏之外的所有名字\w+.*?;
是否有正则表达式匹配所有名称,包括最后一个名称?
答案 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")