我似乎无法找出匹配字符串的正则表达式模式,只有当它不包含空格时。例如正则表达式:如果字符串包含空白,则不匹配
"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