我似乎無法找出匹配字符串的正則表達式模式,只有當它不包含空格時。例如正則表達式:如果字符串包含空白,則不匹配
"this has whitespace".match(/some_pattern/)
應該返回nil
但
"nowhitespace".match(/some_pattern/)
應與整個字符串返回MatchData。任何人都可以爲上述建議解決方案嗎?
我似乎無法找出匹配字符串的正則表達式模式,只有當它不包含空格時。例如正則表達式:如果字符串包含空白,則不匹配
"this has whitespace".match(/some_pattern/)
應該返回nil
但
"nowhitespace".match(/some_pattern/)
應與整個字符串返回MatchData。任何人都可以爲上述建議解決方案嗎?
在Ruby我認爲這將是
/^\S*$/
這意味着「st藝術,匹配任意數量的非空白字符,結束「
啊!我在最後錯過了線路終點。乾杯! – 2010-01-07 04:58:39
@Bart,注意'\ n'和'\ r'也被認爲是空白字符。 – 2010-01-07 06:26:47
您可能需要'/ \ A \ S * \ Z /',因爲這將匹配字符串的開頭和結尾,而不是行的開頭和結尾。 ''lineone \ nlinetwo''與'/^\ S * $ /'匹配會返回''lineone'' – 2010-01-07 07:40:20
>> "this has whitespace".match(/^\S*$/)
=> nil
>> "nospaces".match(/^\S*$/)
=> #<MatchData "nospaces">
^
=串開頭
\ S =非空白字符,*
= 0以上
$
=串的端
"nowhitespace".match(/^[^\s]*$/)
你想:
/^\S*$/
,上面寫着」字符串的開頭,然後零個或多個非空白字符匹配,則字符串的結尾「。預定義字符類的約定是小寫字母表示一個類,而大寫字母表示其否定。因此,\s
引用空白字符,而\S
引用非空白字符。
不知道你能做到這一點的一個模式,但你可以這樣做:
"string".match(/pattern/) unless "string".match(/\s/)
+1以不同的方式思考問題...只要該字符串不包含空格,該問題就可以解釋爲匹配包含模式'x'的字符串... – 2010-01-07 04:41:28
str.match(/^\S*some_pattern\S*$/)
你可以隨時搜索爲空間,一則否定的結果:
"str".match(/\s/).nil?
你是否試圖確定一個字符串是否包含空格,或者如果一個字符串包含某種模式,但只有在沒有空格的情況下? – mletterle 2010-01-07 04:22:14
基本上我想匹配返回零如果字符串包含空格。 – 2010-01-07 04:57:13