[英]Regex multiline syntax help (python)
我正在努力進行具有多個匹配項的多行正則表達式。
我的數據由換行符/換行符分隔,如下所示。 如果我分別測試,則我的模式與這些行匹配。 我該如何匹配所有出現的事件(特別是數字?
我讀過我可以/應該以某種方式使用DOTALL(可能與MULTILINE一起使用)。 這似乎匹配任何字符(也包括換行符),但不確定是否有任何最終的副作用。 不想讓它匹配整數或其他東西,最后給我格式錯誤的數據。 關於此的任何信息都將很棒。
不過,我真正需要的是使此示例代碼正常工作的一些幫助。 我只需要從數據中獲取數字。
當我在以前的情況下只需要一個特定的匹配,而不能完全確定我現在應該使用哪個功能(finditer,findall,search等)時,我使用了re.fullmatch。
感謝您提供的所有幫助:)
data = """http://store.steampowered.com/app/254060/
http://www.store.steampowered.com/app/254061/
https://www.store.steampowered.com/app/254062
store.steampowered.com/app/254063
254064"""
regPattern = '^\s*(?:https?:\/\/)?(?:www\.)?(?:store\.steampowered\.com\/app\/)?([0-9]+)\/?\s*$'
evaluateData = re.search(regPattern, data, re.DOTALL | re.MULTILINE)
if evaluateString2 is not None:
print('do stuff')
else:
print('found no match')
import re
p = re.compile(ur'^\s*(?:https?:\/\/)?(?:www\.)?(?:store\.steampowered\.com\/app\/)?([0-9]+)\/?\s*$', re.MULTILINE)
test_str = u"http://store.steampowered.com/app/254060/\nhttp://www.store.steampowered.com/app/254061/\nhttps://www.store.steampowered.com/app/254062\nstore.steampowered.com/app/254063\n254064"
re.findall(p, test_str)
https://regex101.com/r/rC9rI0/1
這給出[u'254060', u'254061', u'254062', u'254063', u'254064']
。
您是否要返回這些特定的整數?
/
沒有特殊含義,因此您不必轉義(在非原始字符串中,您必須轉義每個\\
)
嘗試這個
regPattern = r'^\s*(?:https?://)?(?:www\.)?(?:store\.steampowered\.com/app/)?([0-9]+)/?\s*$'
re.search
在第一次出現時停止
您應該使用此界面
re.findall(regPattern, data, re.MULTILINE) ['254060', '254061', '254062', '254063', '254064']
注意:搜尋不適用於我(python 2.7.9)。 它只是返回第一行數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.