在python3中,我需要從格式爲555=AB:C$: EF 1234567890
的序列中提取一個10位數字,我應該怎麼做? =
和10位字符串之間的字符串幾乎可以是任何字符,而這些字符的長度始終爲10 ...我嘗試使用re.compile()
,但無法設置適當的模式。任何建議是值得歡迎的!編輯#1:字符串總共有20個字符,最後10個數字,前10個可以是任何東西(空格,字母,$或其他符號和數字)。因此,我還無法確定一個好的模式。編輯#2:問題是,我不能真正識別哪個字符在字符串的末尾(該字符串是一個大文件的一部分)。這個字符串之後的字符是在windows/linux/unix中似乎沒有統一顯示的字符。因此,我試圖從一開始就找到它,而不是從最後開始。謝謝!python正則表達式忽略幾個字符
-3
A
回答
0
如果10位字符串總是在最後,你應該能夠
>>> "555=AB:C$: EF 1234567890"[-10:]
'1234567890'
編輯提取它們:
根據您的編輯,你並不需要一個正則表達式。如果你的字符串總是20個字符,你可以在python中使用普通的字符串操作。因此,無論[-10:]
甚至[10:]
>>> "AB:C$: EF 1234567890"[10:]
'1234567890'
採取後者,如果你想處理從一開始你的字符串。
如果你不能使用字符串到最後,因爲你不知道它在哪裏結束,你可以只使用
>>> "AB:C$: EF 1234567890"[10:20]
'1234567890'
1
如果這10位是總是最後的10個字符字符串,你可以按s[-10:]
,如在其他答案建議。
如果不能保證,只需使用regular expression即可搜索10位數字,並忽略該字符串的其餘部分。這種模式是\d{10}
,即數字\d
和{10}
十次。
>>> import re
>>> s = "555=AB:C$: EF 1234567890"
>>> re.search(r"\d{10}", s).group()
'1234567890'
按照你的說法:
=和10位字符串之間的字符串可以是幾乎任何字符,而這些字符的長度總是10
如果您需要在更大的文本內找到這些數字,您可以搜索=
,然後搜索任意10個字符,然後搜索10個數字,即=.{10}\d{10}
text = "foo bar not a block 1234567890 blub stuff 555=AB:C$: EF 1234567890 more unrelated stuff and another block 555=AB:C$: EF 1234567890 and finally more stuff"
p = re.compile(r"=.{10}(\d{10})")
for x in re.finditer(p, text):
print x.group(1)
輸出是1234567890
後兩個基團。
相關問題
- 1. 正則表達式忽略字符串
- 2. 正則表達式忽略字符串
- 3. 正則表達式Python字符串忽略特殊字符
- 4. 正則表達式,省略幾個字
- 5. Python的正則表達式搜索忽略字符串
- 6. Python正則表達式:替換忽略空字符串
- 7. 正則表達式忽略換行符
- 8. Java正則表達式忽略'。'符號
- 9. 正則表達式 - 忽略內字+ HTML
- 10. 正則表達式忽略字
- 11. 正則表達式:忽略字符字符串比較
- 12. 如何忽略正則表達式中的單個字符
- 13. 正則表達式獲得第n個字符忽略空間
- 14. 忽略字符串中間的一個詞,正則表達式
- 15. 忽略正則表達式匹配中的第一個字符
- 16. Java正則表達式:忽略某個字符之前的所有字符。正則表達式
- 17. 正則表達式在給定字符後忽略模式
- 18. C#正則表達式替換字符串忽略特定字
- 19. 在正則表達式中忽略字符和字邊界
- 20. 正則表達式忽略模式
- 21. Python與幾個正則表達式比較字符串
- 22. 正則表達式來匹配Python中的幾個字符串
- 23. 如何忽略字符串中的正則表達式結果
- 24. 正則表達式 - 忽略字符串的一部分
- 25. 正則表達式忽略數字的符號
- 26. 正則表達式忽略特殊的ASCII字符
- 27. 某些長度的正則表達式忽略指定字符
- 28. 正則表達式問題 - 字符限制和空白忽略
- 29. 如何讓正則表達式忽略URL字符串?
- 30. 正則表達式的字符串中僅忽略價格
你的[-10:]'是否適合你? – vaultah
您嘗試了哪些模式,以及這些模式如何不像您預期的那樣運作? – dsh
如果你想提取一個10位的數字,'r'\ d {10}'可能值得一試。 –