[英]What does regex return to python if it can't find a match
如果在字符串中找不到匹配項,則regex返回Python嗎?
我正在嘗試在python中編寫if函數。 我有一個包含2個不同字符串結尾的列表,我正在嘗試測試第一個正則表達式,如果找不到任何東西,請使用else運行其他正則表達式搜索。
有沒有其他方法可以解決這個問題?
列表中的字符串如下所示:
1. ...at Company A; Price $84
2. ...at Company B
我只是想退出公司A和公司B
我已經嘗試過if函數中的== None, [], '', False
。
這是我的Regex模式代碼。 當我針對整個列表分別測試它們時,這兩種模式都起作用:
analystcompanypattern = re.compile('(?<=at )(.*)(?=;)')
analystcompanypattern_noPrice = re.compile('(?<=at )(\w+)$')
if str(analystcompanypattern_noPrice.findall(test)) == None:
analyst_company = str(analystcompanypattern.findall(test))
else:
analyst_company = str(analystcompanypattern_noPrice.findall(test))
我試圖弄清楚如果正則表達式找不到匹配項,則將無處放在什么位置,讓分析公司獲取以價格結尾的值,讓[]結尾像2的值,並獲取“ company”的字符串。
它返回具有匹配序列的列表。 如果沒有匹配項,則列表將為空。
要測試列表是否為空:
if len(analystcompanypattern_noPrice.findall(test)) == 0:
您可以嘗試(無需條件)
re.search('at ([^;]*)',str)
>>> str='...at Company B'
>>> m = re.search('at ([^;]*)',str)
>>> m.group(1)
>>> 'Company B'
>>>
>>>
>>> str='...at Company A;price 2'
>>> m = re.search('at ([^;]*)',str)
>>> m.group(1)
>>> 'Company A'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.