获取姓氏的前三位数字

2024-09-30 23:37:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要两个不同的正则表达式。第一个是匹配年份的最后两个数字,例如,如果我有“2010”,我想得到“10”。我试着做一些

\d{2}\Z

但没用。 第二种是两人取得以“和”隔开的各种姓氏的前三个字母。 例如我有

^{pr2}$

我想一个正则表达式,返回“SmiDoe”,但只有“Smi”如果Doe不存在。这将是很好的,它也适用于两个以上的名字和姓氏。在

编辑:提供的解决方案工作得很好,现在我正试图使用它们来使用Ultisnips pluginforvim构建bibtex(.bib扩展名)代码段。我试过的片段是

snippet ta "Test" b
@Article{${1/\s(\w{,3})\w*($|\sand)/$1/g}${2/\d{2}$/$0/g},
 author={${1:John Smith and Paul Anthony Samuelson}}
 year={${2:2010}}}
endsnippet

问题是,当代码片段被展开时,我得到的是“JohnSmi Paul AnthonySam2010”,而我想要的是“SmiSam10”。在


Tags: 编辑字母数字解决方案名字smi年份doe
2条回答

你真的需要一个正则表达式,还是这个可以?在

>>> def AbbreviateAuthors(names):
...     return ''.join(i.split()[-1][:3] for i in names.split(' and '))
>>> AbbreviateAuthors('John Smith and Paul Anthony Doe and Chris Burns')
34: 'SmiDoeBur'
>>> AbbreviateAuthors('John Smith and Paul Anthony Doe')
35: 'SmiDoe'
>>> AbbreviateAuthors('John Smith')
36: 'Smi'
>>> AbbreviateAuthors('Smith')
37: 'Smi'
>>> AbbreviateAuthors('Sm')
38: 'Sm'

以下是获取最后两位数字的方法:

"/\d{2}$/" -> "2010" -> 10

http://rubular.com/r/IgVeKXucJ0

要从字符串中获取姓氏的前三个字母,您需要:

^{pr2}$

http://rubular.com/r/f8OXDB9pDq,显然想要匹配项中的第一项

相关问题 更多 >