如何编写正则表达式来匹配不以空格字符开头或结尾的字符串?匹配的字符串可以在中间包含任意字符,重要的是,单个字符串应该匹配。
我的尝试是:
/\A\S.*\S\z/但这与一个字符是不匹配的。
发布于 2014-06-30 03:46:10
这是一种情况,您不应该尝试构建一个匹配某物的regex,而应该构建一个与匹配的正则表达式--的补充,并消极地使用regex。
re = /\A\s|\s\z/
re !~ " " # => false
re !~ "" # => true
re !~ "sss" # => true
re !~ "s ss" # => true
re !~ " s ss" # => false发布于 2014-06-30 03:46:54
is_ok = lambda do |str|
a, z = str.chars.first, str.chars.last
"#{a}#{z}" =~ / |\n|\t/ ? false : true
end
#"more elegant" (yeah dude I rock)
is_ok = lambda {|str| [0, -1].map{|i| str.chars[i] }.join =~ / |\n|\t/ ? false : true}发布于 2014-06-30 03:29:14
使用这个正则表达式:
\A\S+(?:\s*\S+)*\Z您可以使用这个演示的测试字符串部分来查看这是如何工作的。我假设字符串可以跨越多行,因此\A和\Z
在Ruby中,类似于:
if subject =~ /\A\S+(?:\s*\S+)*\Z/
match = $&解释
\A锚点断言我们处于主题字符串的开头\S+匹配一个或多个非空白字符(包括制表符、换行符等)。另外,如果希望在开头允许换行符,但只想排除空格字符,则可以使用[^ ]+而不是\S+。(?:\s*\S+)匹配任意数量的可选空格字符,后面跟着一个或多个非空格字符。*量词重复了0次或多次。\Z锚点断言我们位于主题字符串的末尾https://stackoverflow.com/questions/24482556
复制相似问题