RegEx:如何排除空格

时间:2012-07-12 11:26:59

标签: javascript regex ruby-1.8.7

考虑Ruby 1.8.7或Javascript。

我有以下字符串:(GMT+02:00) Istanbul我希望捕获)之后的所有内容(注意括号后面包含的空格)

我创建的正则表达式几乎处理异常,包括不需要的空格。

\s\D* => Istanbul

我该如何解决这个问题并且这是这个的正则表达式?

修改

字符串可以是其他字符串,类似于(GMT+01:00) West Central Africa

在这种情况下,我想要West Central Africa

所以,有些答案是行不通的。

抱歉,我忘了提及。

感谢。

7 个答案:

答案 0 :(得分:1)

积极的后瞻断言是一种选择。

(?<=\s)[\D]+

(使用python regex lib测试)

提取GMT偏移定义之后的第一个单词,如示例中的那个......

(?<=\([\D]{3}[\+\-][\d]{2}:[\d]{2}\)\s)[\D]+

答案 1 :(得分:1)

在Ruby中:

irb> line = '(GMT+01:00) West Central Africa'
irb> line.sub(/^.*\)\s/, '')
=> "West Central Africa"

在JavaScript中:

js> var line = '(GMT+01:00) West Central Africa'
js> line.replace(/^.*\)\s/, '')
West Central Africa

答案 2 :(得分:0)

您可以在正则表达式中的每个其他字符之间粘贴可选的空格字符 \ s * 。虽然被授予,但它会有点冗长。

答案 3 :(得分:0)

执行以下操作:

\S+$

它匹配行尾不是空格的所有内容。

如果您只想匹配字母字符,可以使用以下内容:

\w+$

您可以测试它们here

答案 4 :(得分:0)

检查一下:

(?<=\s)[\w]*

Check here for your example

答案 5 :(得分:0)

当你说捕获时,如果你希望获得一个命名捕获,并忽略其余的捕获,你可以执行以下操作:

(?:.+\s)(?<Country>.+)

答案 6 :(得分:0)

非常简单的表达方式:

[^)]*\)\s*(\w+)

解释

[^)]*        any character except: ')' 
             (0 or more times, matching the most amount possible)

\)           ')'

\s*          whitespace (\n, \r, \t, \f, and " ") 
             (0 or more times, matching the most amount possible)

\w+          word characters (a-z, A-Z, 0-9, _) 
             (1 or more times, matching the most amount possible)