我不确定我在这里做错了什么:
"#New York".gsub(/[^a-zA-Z\s]/,"").strip
此正则表达式应删除所有非字母字符和大于1个空格的所有空格。
它应该给我以下结果:
"New York"
正则表达式有什么问题?
答案 0 :(得分:1)
您可以将strip
替换为squeeze
:
"#New York".gsub(/[^a-zA-Z\s]/,"").squeeze(" ")
# => New York
另一种方法是使用像
这样的正则表达式" #New \t York ".gsub(/\s{2,}|[^\sa-zA-Z]/, ' ').strip
或者
" #New \t York ".gsub(/(\s){2,}|[^\sa-zA-Z]/, '\1').strip
此处,/\s{2,}|[^\sa-zA-Z]/
匹配2个或更多个连续的空格(\s{2,}
)或(|
)除ASCII字母或空格([^\sa-zA-Z]
)以外的任何字符。如果是(\s){2,}
,则在\1
占位符的帮助下,最后捕获的空格将插入到结果字符串中。
查看Rubular demo。
答案 1 :(得分:0)
正则表达式:(?:\s+(?=\s)|[^A-Za-z\s]+)
Ruby代码:
<parent-element></parent-element>
输出:
"#New York".gsub(/(?:\s+(?=\s)|[^A-Za-z\s]+)/, '')