簡體   English   中英

正則表達式多行語法幫助(Python)

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

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