我正在搜索字符串中的城市名称:
mystring = 'SDM\Austin'
city_search = r'(SD|Austin)'
mo_city = re.search(city_search,mystring,re.IGNORECASE)
city = mo_city.group(1)
print(city)
这会将城市作为' SD'。
返回有没有办法让Austin'偏好?
将订单切换为(Austin | SD)并不起作用。
答案与How can I find all matches to a regular expression in Python?相同,但用例略有不同,因为首选匹配。
答案 0 :(得分:1)
您正在使用re.search
,而是使用returns
lists
全部 matches
的{{1}}。< / p>
因此,如果您将代码修改为:
mystring = 'SDM\Austin'
city_search = r'(SD|Austin)'
mo_city = re.findall(city_search,mystring,re.IGNORECASE)
city = mo_city[1]
print(city)
它将工作查找,输出:
Austin
所以,mo_city
是list
:['SD', 'Austin']
,因为我们希望assign
第二个element
(Austin
)到{{ 1}},我们使用city
索引1
。
答案 1 :(得分:1)
您已经在这里找到了一个很好的答案(使用findall
代替search
使用正则表达式)。这是另一种替代方法(不使用正则表达式),它根据字符串列表检查字符串并返回匹配项。根据您提供的示例代码,这应该适合您,并且可能比正则表达式方法更容易。
list = ['SD', 'Austin']
s = 'SDM\Austin'
for l in list:
if l in s:
print '"{}" exists in "{}"'.format(l, s);