正则表达式:在一个表达式中可能的组合列表运算符[a-z]和“”{2,}?只是字母a-z而不是一个空格连续

时间:2010-09-18 10:19:35

标签: ruby regex

我正在搜索一个正则表达式,让我可以连续替换所有字符,但字母和数字以及一个空格。

例如:

string = "a b c         e f g 1 2 3 !"

应该用ruby替换为"a b c e f g 1 2 3 "

匹配字母和数字对于[a-zA-Z0-9]与列表运算符不同。 但是如何将“”{2,}的区间运算符与列表运算符组合起来,因为区间看起来它们不能在列表运算符中使用?还是有另一种方法。

2 个答案:

答案 0 :(得分:3)

您可以简单地用一个空格替换所有非字母数字字符序列:

string.gsub(/[^a-zA-Z0-9]+/, " ")

答案 1 :(得分:0)

irb(main):001:0> string = "abc         e f g 1 2 3 !"
=> "abc         e f g 1 2 3 !"
irb(main):002:0> string.gsub(/[^[:alnum:]]/,"").gsub(/(.)/,'\1 ')
=> "a b c e f g 1 2 3 "

irb(main):002:0> string = "abc         e f g 1 2 3 !"
=> "abc         e f g 1 2 3 !"
irb(main):003:0> string.gsub(/[^a-zA-Z0-9]+/, " ")
=> "abc e f g 1 2 3 "