我想檢查一個包含句點「。」的字符串,最多一次在python中。正則表達式最多出現一次
2
A
回答
7
[^.]*\.?[^.]*$
而且一定要match
,不search
>>> dot = re.compile("[^.]*\.[^.]*$")
>>> dot.match("fooooooooooooo.bar")
<_sre.SRE_Match object at 0xb7651838>
>>> dot.match("fooooooooooooo.bar.sad") is None
True
>>>
編輯:
如果你只考慮整數和小數,那就更簡單了:
def valid(s):
return re.match('[0-9]+(\.[0-9]*)?$', s) is not None
assert valid("42")
assert valid("13.37")
assert valid("1.")
assert not valid("1.2.3.4")
assert not valid("abcd")
0
+1
這將匹配1次或更多次。我認爲這個問題需要0或1次。 – 2009-09-27 08:40:32
+0
你說得對。在正則表達式加上意味着一個或多個。我應該使用問號而不是加號。 – 2009-09-27 08:45:53
2
您可以使用:
re.search('^[^.]*\.?[^.]*$', 'this.is') != None
>>> re.search('^[^.]*\.?[^.]*$', 'thisis') != None
True
>>> re.search('^[^.]*\.?[^.]*$', 'this.is') != None
True
>>> re.search('^[^.]*\.?[^.]*$', 'this..is') != None
False
(匹配週期0或者1次)
0
如果期間應當將整個字符串中只有一次的存在,然後使用?
操作:
^[^.]*\.?[^.]*$
打破此:
^
相匹配的字符串的開頭[^.]
匹配零個或多個字符不屬於週期\.?
期間字符匹配(必須與\
轉義,因爲它是一個保留的字符)恰好爲0或1次[^.]*
是在2中使用上述$
相同的圖案串
作爲的端部相匹配之外,個人我不會使用正則表達式此(除非我CHEC國王的其他方面的有效性字符串也)。我只會使用計數功能。
5
無需正則表達式,見str.count()
:
str.count(sub[, start[, end]])
返回非重疊出現子子的在範圍[開始,結束]的數量。可選參數開始和結束被解釋爲切片符號。
>>> "A.B.C.D".count(".")
3
>>> "A/B.C/D".count(".")
1
>>> "A/B.C/D".count(".") == 1
True
>>>
0
爲什麼你需要檢查?如果你在一個字符串中有一個數字,我現在猜想你會想很快將它作爲一個數字處理。也許你可以做到這一點沒有尋找你飛躍之前:
try:
value = float(input_str)
except ValueError:
...
else:
...
相關問題
- 1. Python-正則表達式輸出最後一次出現[HTML Scraping]
- 2. 正則表達式:找到最後一次出現的模式
- 3. 正則表達式:獲取最後一次出現
- 4. 正則表達式最後一次出現?
- 5. 查找序列正則表達式的最後一次出現
- 6. 正則表達式的最後一次出現:和.tst
- 7. 正則表達式開始從最後一次出現
- 8. 正則表達式最後一次出現
- 9. 正則表達式只匹配最後一次出現
- 10. PHP正則表達式最後一次出現
- 11. 正則表達式匹配最後一次出現
- 12. GWT正則表達式只匹配的最後一次出現
- 13. 蟒蛇正則表達式 - 最後一次出現EOL
- 14. 正則表達式最後一次出現
- 15. VBA正則表達式最後出現
- 16. Python正則表達式在模式內出現零次或多次出現
- 17. 多行正則表達式:匹配最後一次出現只有
- 18. 正則表達式:一個字的多次出現,只替換最後一次出現
- 19. 在多行文本框中多次出現正則表達式
- 20. jQuery的正則表達式只是發現第一次出現
- 21. 正則表達式如何使用正則表達式查找最後一次出現的字符
- 22. 正則表達式:一個第一次出現和另一個
- 23. 使用SED腳本查找多次出現正則表達式的最後一次出現
- 24. 正則表達式匹配字符串高達最後一次出現的「/」
- 25. 正則表達式:獲取模式的第一次出現
- 26. 殼牌正則表達式中括號多次出現
- 27. 正則表達式匹配多次出現的字符串
- 28. Python正則表達式匹配多次出現的單詞
- 29. 集團正則表達式多次出現
- 30. JAVA正則表達式中的多次出現
你能給什麼將是有效的字符串一些例子,這將是無效的字符串?這個問題有點含糊。例如,期間可以有字符嗎?你只是在談論連續的字符,或字符串中的所有字符? – 2009-09-27 08:41:48
我想檢查整數和小數。所以在這種情況下有效的字符串將是2.34或2.無效的字符串將是2.2.3。其實,我現在所擁有的是:[如果不是re.search(「[0-9 \。] + $」,item)或不re.search(「^ * \。?* $」,item) :返回「無效值」]。如果你知道更好的方法,請讓我知道。謝謝! – teggy 2009-09-27 08:54:09