這是我的字符串,EE(P1)BAEEEEEE(P1)(P2)EEAACIIII(P1)(P1)BACIA(P1)AIE
。
我想匹配)BAEEEEEE(
但不是)(
所以基本上(\).*?\() AND NOT (\)\()
更新:我不能用*替換*,因爲那會匹配)(P2)EEAACIIII(
我不希望發生這種情況。我想匹配的唯一的事情是,如果之間存在的東西)和(Python中的正則表達式匹配
-1
A
回答
2
使用+
而不是*
,因爲+意味着一個或多個字符(這inturn預計ATLEAST一個字符),而*
意味着零個或多個。
\).+?\(
實施例:
>>> import re
>>> s = "EE(P1)BAEEEEEE(P1)(P2)EEAACIIII(P1)(P1)BACIA(P1)AIE"
>>> re.findall(r'\).+?\(', s)
[')BAEEEEEE(', ')(P2)EEAACIIII(', ')(P1)BACIA(']
>>> re.search(r'\).+?\(', s).group()
')BAEEEEEE('
更新:
如果你不想匹配中間有字符串(
,)
的字符串,你可以像下面那樣修改上面的正則表達式。
>>> re.findall(r'\)[^()]+\(', s)
[')BAEEEEEE(', ')EEAACIIII(', ')BACIA(']
2
您可以使用:
\)[^\(]+?\(
這將匹配)
和遇到的第一個(
之間的任何東西。因此,它將匹配)Sgsdgsg(
而不是)(dg)sdgsgsh(
,因爲在)(dg)sdgsgsh(
中,在)
之後遇到第一個(
,即)(
的形式。不過,這反而匹配)sdgsgsh(
+0
太謝謝你了! – Gokul1794
+0
如果OP唐''不想選擇')foo)kkf('然後他可以使用'\)[^ \(\)] +?\('。 –
相關問題
- 1. Python中的正則表達式匹配
- 2. 在Python中匹配正則表達式
- 3. Python正則表達式 - 模式匹配
- 4. Python的正則表達式匹配
- 5. Python的正則表達式匹配{}
- 6. Python的正則表達式匹配## ##
- 7. Python的正則表達式不匹配
- 8. Python的URL匹配(正則表達式)
- 9. Python的正則表達式匹配
- 10. Python的 - 非正則表達式匹配
- 11. Python正則表達式匹配鞋號
- 12. Python文件正則表達式匹配
- 13. Python正則表達式不匹配行
- 14. 正則表達式匹配 - Python
- 15. 加速python正則表達式匹配
- 16. Python正則表達式匹配異常
- 17. Python正則表達式匹配日期
- 18. python正則表達式CIDR匹配
- 19. Python正則表達式匹配:## ##
- 20. Python不匹配正則表達式
- 21. Python正則表達式不匹配
- 22. Python正則表達式匹配
- 23. Python正則表達式匹配撇號
- 24. Python正則表達式不匹配
- 25. Python正則表達式匹配OpenWindow.document.write([this])
- 26. Python - 正則表達式,多個匹配
- 27. Python正則表達式匹配
- 28. Python正則表達式匹配多次
- 29. 正則表達式匹配Python
- 30. Python正則表達式換行匹配
是的,這會工作,但隨後將匹配')(P2)EEAACIIII('我不希望這樣的事情發生 – Gokul1794
檢查我的更新.. –