我有一个无意义的字符串,我想从中拉出缩写。
import re
string = 'in the U.S.A. there are (i.e., AUD113.3m) said R. Jones'
re.findall('(?:[a-zA-Z]\.)+', string)
>>>> ['U.S.A.', 'i.e.', 'R.']
Q值。让我们说我需要这些缩写成为re.group()的一部分,这样我以后可以将它们称为re.group(1),re.group(2)等。因为使用{{ 1}}意味着它们不会被(?:...)
或re.search()
捕获,如果你不知道你要找多少匹配,最好的方法是什么,得到这样的东西:
re.match()
现在,我知道search()只找到第一个匹配项,但是你可以通过重复使用正在查找的内容的正则表达式来获取re.search中的组,如下所示:
m = re.search(r'regex', s)
m.group()
>>>> ('U.S.A.', 'i.e.', 'R.')
m.group(2)
>>>> R.
findall很好,因为你不必知道要查找多少个表达式重复 - 它只是找到它们。但是,如果你有一篇很长的文字而且你不知道要在你的re.search正则表达式中加入line = r'2018\2019-2020-2021'
year = re.search(r'(\d{4}).*(\d{4}).*(\d{4}).*(\d{4})', line)
year.group(1)
>>>> '2018'
year.group(2)
>>>> '2019'
year.group(3)
>>>> '2020'
year.group(4)
>>>> '2021'
多少呢?