我要檢查一個字符是否是(
之一,[
,{
我能做到這樣檢查是否字符({[使用正則表達式
if char == "{" || char == "(" || char == "["
但我想用正表達式來實現這一
如何做到這一點
我要檢查一個字符是否是(
之一,[
,{
我能做到這樣檢查是否字符({[使用正則表達式
if char == "{" || char == "(" || char == "["
但我想用正表達式來實現這一
如何做到這一點
這是非常直接的,你只需將它們添加到組:?
BRACKETS = /[\{\(\[]/
if (char.match(BRACKETS))
# ...
end
凡在正則表達式[...]
表示一組匹配的單個字符。
爲了測試它的只這類型的角色:
BRACKETS = /\A[\{\(\[]\z/
現在你的代碼的簡單重構,而無需使用正則表達式是這樣的:
case (char)
when '{', '(', '['
# ...
end
可能會或可能不會比正則表達式快,所以如果性能是關鍵,那麼您可能也想要測試該方法。
您可以檢查字符僅與正則表達式支架:
if char[/\A[({\[]\z/]
#...
end
你能使用正則表達式':: quote'幫助反斜線? – squiguy
你可以,但手動操作並不是什麼大事。當你處理任意的用戶數據並且你不知道你必須逃脫的時候,這個函數很有用。 – tadman
@squiguy在這種情況下,更好的功能是['Regexp.union'](https://ruby-doc.org/core-2.3.1/Regexp.html#method-c-union),如'Regexp .union('{','[','(')'。 – tadman