簡體   English   中英

Python正則表達式到行尾

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

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