簡體   English   中英

如果找不到匹配項,正則表達式會返回python什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM