[英]Python Regular expression to end of line
有點沮喪,我無法解決這個問題,但是我想定義一個正則表達式,選擇一個未知數量的單詞(有些單詞是空格,有些是數字,有些是下划線的)。
當我說“單詞數量未知”時,如果很現實,我很樂意將其限制為10個。 基本上,我正在掃描文件名,並且不要懷疑長度不超過10個字,但是不必設置限制就很好了。
到目前為止,我最好的是:
tc = re.findall(r'FROM CLIP NAME:\s\s(\w*\s*\w*\s*\w*\s*\w*\s*\w*\s*\w*\s*\w*\s*\w*\s*\w*\s*\w*)', text)
每行開頭的位置為“ FROM CLIP NAME:\\ s \\ s”。
我在上面的嘗試是完全失敗,因為\\ s讀取換行符以及空格,因此也從下一行獲取數據。
FROM CLIP NAME:\s{2}([\w\s]*)$
您可以使用字符類來定義允許的字符(也可以是預定義的字符類,例如\\w
和\\s
)並接受任意數量的字符。 這樣,您就不會真正在意其中包含的內容。 您也可以只使用一個點.
匹配任何東西 。
尾隨的$
將使正則表達式要求在行的末尾。 請注意,對於$
的基於行的行為,您需要對正則表達式使用re.M
標志,否則$
將匹配字符串的結尾。
re.compile('FROM CLIP NAME:\s{2}([\w\s]*)$', re.M)
如果在您的情況下FROM CLIP NAME:
是靜態前綴,則您不應使用正則表達式。 只需迭代行並刪除eumiro顯示的前綴即可。
不使用正則表達式怎么樣?
檢查行是否以"FROM CLIP NAME: "
開頭,然后將其開頭並返回其余字符串:
title = "FROM CLIP NAME: "
for line in lines:
if line.startswith(title):
tc = line[len(title):]
這會遍歷行,因此line
始終只會一直到換行為止。
如果您沒有行列表(或文件對象),但是沒有文本,請for line in text.splitline()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.