re.search(r'c\.t', 'c.t abc')
成功匹配c.t
。但是匹配的模式是c\.t
,c.t
如何匹配到c\.t
?反斜槓發生了什麼?re.search如何匹配原始字符串?
-5
A
回答
1
在正則表達式中,點符號具有特殊含義,即它可以匹配除換行符以外的任何字符(除非使用re.S
/re.DOTALL
標誌)。在這種情況下,反斜槓的作用是將點從其特殊含義中轉義出來,並讓正則表達式引擎將其解釋爲僅僅匹配一個點(而不是其他字符)。考慮反斜槓是否不存在:
>>> re.search(r'c.t', 'c.t abc')
<_sre.SRE_Match object at 0x7fe7378d8370>
您作爲輸入提供的原始字符串仍然匹配。但現在下面也將匹配:
>>> re.search(r'c.t', 'I saw a cat')
<_sre.SRE_Match object at 0x7fe7378d83d8>
由於cat
的a
資格作爲任何非換行符,這是什麼,如果轉義一個反斜槓.
將匹配。你可以看到,如果我們添加反斜槓,它不再匹配。
>>> print(re.search(r'c\.t', 'I saw a cat'))
None
更多關於Python實現正則表達式的位置:
的Python 2.7.x:https://docs.python.org/2/library/re.html
的Python 3.4.x:https://docs.python.org/3/library/re.html
編輯,以反映@ cdarke的約換行符
優秀點相關問題
- 1. re.search與字節字符串不匹配
- 2. 如何匹配Python原始字符串中的新行字符
- 3. 加密字符串以匹配原始字符串的長度
- 4. 如何使用原始匹配值替換字符串
- 5. Scala:如何使用原始匹配值替換字符串
- 6. 將列表中的字符串轉換爲re.search的原始字符串
- 7. 在python re.search中使用re匹配字符串
- 8. 如何匹配字符串?
- 9. NSPredicate用字符串匹配起始字
- 10. 原型js中的字符串匹配
- 11. 映射正則表達式匹配到原始的字符串
- 12. 使用gsub和block時傳遞原始字符串PLUS匹配?
- 13. 的NSString匹配字符串開始,如果匹配
- 14. 匹配字符串匹配,如果
- 15. PHP如何找到字符串後匹配/通配符/匹配
- 16. re.search():(\ d +)僅匹配單個數字
- 17. 階字符串,原始字符串
- 18. mysql匹配字符串與表中字符串的開始
- 19. 蟒蛇re.search匹配太多
- 20. 字符串匹配
- 21. 字符串匹配
- 22. 字符串匹配
- 23. 匹配字符串
- 24. 匹配字符串
- 25. 匹配字符串
- 26. 字符串匹配
- 27. 匹配字符串
- 28. 字符串匹配
- 29. 字符串匹配
- 30. 匹配字符串
什麼反斜槓? –
被匹配的模式包含反斜槓?因爲它是一個原始字符串。 – Ankit
@Ankit這裏沒有反斜槓.. – Maroun