如何编写与行的开头,一堆数字,然后至少一个空格匹配的正则表达式?

时间:2017-08-07 20:28:21

标签: regex match ruby-on-rails-5

我正在使用Rails 5.我想从字符串的开头删除数字,但前提是它们后跟至少一个空格。我提出了正则表达式

/^\d+[:space:]/

除了工作得太好了。下面是表达式,当它不应该

时匹配
2.4.0 :032 > line = "1sb    212"
 => "1sb    212"
2.4.0 :033 > line =~ /^\d+[:space:]/
 => 0

它不应该与表达式匹配,因为第一个单词“1sb”有一个数字,但如果没有后跟空格则为数字。如何调整我的表达式,使其仅匹配一个或多个数字,后跟至少一个空格?

2 个答案:

答案 0 :(得分:0)

您需要将POSIX字符类放入括号表达式中:

/^\d+[[:space:]]/
     ^         ^

请参阅Rubular demo

否则,[:space:]被视为常规字符类,并匹配单个字符,:s1sb后有s p数字),acetemplate<class Type> XY<Type> operator-(const XY<Type>& P, const XY<Type>& Q)

答案 1 :(得分:0)

一个简单的解决方案是:

/^\d+\s+/

请注意,\s+不仅捕获空格,还捕获制表符和换行符。这可能对您的情况很重要。