2011-04-06 100 views
0

分开我想要做的正则表达式如下:允许字母,数字和#,替换逗号和空间

1. allow alphanumeric characters 
2. allow the # character, and comma ',' 
3. replace the comma ',' with a space 
4. split on space 


sentence = "cool, fun, house234" 

>> [cool, fun, house234] 
+2

在您的示例中,逗号用作分割点,不会被空格替换。这个问题可能没有准确的措词。另外,你应该在''cool''的结果中加双引号,以表明'cool'不是局部变量,也不是整个括号内的东西就是结果字符串。 – sawa 2011-04-06 02:40:40

+0

'allow'#'和',''是什么意思?应该使用既不是字母数字,'#',也不是''的字符应该做什么?如果''允许','什么意思'变成空格结尾,最终用作分隔符,而'#'不是? – sawa 2011-04-06 02:51:01

+0

我想分割空间,有些人可能会输入','认为它是一个分离器,所以我想删除这些字符或替换一个空格。 – Blankman 2011-04-06 02:56:45

回答

4

这是一个简单的方法来做到这一点:

sentence.scan(/[a-z0-9#]+/i) #=> ["cool", "fun", "house234"] 

基本上它在寻找包含az大写和小写字符运行,加上09,并#,并返回那些。由于逗号和空格不匹配,因此会被忽略。

你没有使用#显示一个例子,但我补充说'因为你这么说。

0

你可以做1和2用正则表达式,而不是3和4

sentence = "cool, fun, house234" 

sentence.gsub(',', ' ').split if sentence =~ /[0-9#,]/ 

=> [ "cool", "fun", "house234" ] 
0
"cool, fun, house234".split(",") 
=> ["cool", " fun", " house234"] 

您只需通过“”入拼合方法拆分的逗号,没有必要将其转换为空间。

0

也许,你想要的是这样吗?

string.gsub(/[^\w, #]/, '').split(/ +,? +/) 
相关问题