給出一個字符串#abcde#jfdkjfd
解析,我怎麼能得到兩個#
之間的字符串?我也想,如果沒有#
對(意味着沒有#
或只有一個#
),該函數將返回None
。Python字符串使用正則表達式
1
A
回答
7
>>> import re
>>> s = "abc#def#ghi#jkl"
>>> re.findall(r"(?<=#)[^#]+(?=#)", s)
['def', 'ghi']
說明:
(?<=#) # Assert that the previous character is a #
[^#]+ # Match 1 or more non-# characters
(?=#) # Assert that the next character is a #
2
使用(?<=#)(\w+)(?=#)
和捕捉到的第一組。你甚至可以通過一個包含幾個嵌入字符串的字符串循環,它將起作用。
這同時使用了積極的回顧後,積極的前瞻。
+0
你並不需要一個組,因爲這些查找並不是匹配的一部分。 – 2011-12-19 09:43:02
+0
是的,那是真的......只是一種習慣! – fge 2011-12-19 09:44:43
1
如果沒有正則表達式的堅持,並願意在沒有結果的話,最簡單的方式來接受空單,而不是None
的情況是:
>>> "#abcde#jfdkjfd".split('#')[1:-1]
['abcde']
注意,結果真的必須是一個清單,因爲您可能有多個結果。
如果你堅持要None
,而不是一個空列表的(雖然不是完美的,因爲這也將轉任爲空字符串轉換成無):
>>> "#abcde#jfdkjfd".split('#')[1:-1] or None
['abcde']
如果你只想要第一個標記的字符串,那麼你可以做這個:
>>> def first_marked(s):
token = s.split('#')
if len(token) >= 3:
return token[1]
else:
return None
>>> first_marked("#abcde#jfdkjfd")
'abcde'
相關問題
- 1. 正則表達式字符串在python
- 2. Python字符串正則表達式
- 3. 字符串使用正則表達式替換正則表達式字符類
- 4. 正則表達式的正則表達式的Java字符串
- 5. 正則表達式正則表達式匹配字符串
- 6. 正則表達式(正則表達式)的子字符串
- 7. Javascript正則表達式 - 正則表達式拆分字符串
- 8. 用字符串表示正則表達式還是不用字符串表達正則表達式?
- 9. 正則表達式引用字符串
- 10. 在Python中使用正則表達式分割字符串
- 11. Python的轉換字符串使用正則表達式乳膠
- 12. 使用python正則表達式提取子字符串
- 13. 試圖提取使用正則表達式的字符串 - Python
- 14. 在python中使用正則表達式來查找字符串
- 15. Python使用正則表達式分割字符串
- 16. 正則表達式和使用python替換字符串
- 17. Python字符串使用正則表達式拆分
- 18. 在python中使用正則表達式分割字符串
- 19. 在Python中使用正則表達式搜索字符串
- 20. 使用正則表達式分割此字符串 - python
- 21. 使用正則表達式來提取字符串位置Python
- 22. 的Python:使用字符串變量如在正則表達式
- 23. Python:使用正則表達式從字符串中去除\ u200b
- 24. 使用正則表達式在字符串中轉義正則表達式
- 25. 正則表達式使用正則表達式來找到子字符串
- 26. 使用正則表達式中的正則表達式提取子字符串
- 27. 字符串模式,正則表達式
- 28. Perl正則表達式用正則表達式的子串替換字符串
- 29. 用字典中的字符串替換python正則表達式
- 30. JavaScript字符串替換使用正則表達式表達
看來你可以用一個基本的正則表達式來實現這一點。看看http://www.regular-expressions.info/。 – 2011-12-19 09:40:04