0

考虑 Ruby 1.8.7 或 Javascript。

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

我创建的正则表达式几乎可以正常工作,它包括不需要的空白。

\s\D*=>Istanbul

我该如何解决这个问题,这个正则表达式是用来做这个的吗?

编辑

字符串可以是其他字符串,例如(GMT+01:00) West Central Africa

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

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

对不起,我忘了提这个。

谢谢。

4

7 回答 7

1

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

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

(用 python 正则表达式库测试)

要在 GMT 偏移定义之后提取第一个单词,就像您的示例中的那样......

(?<=\([\D]{3}[\+\-][\d]{2}:[\d]{2}\)\s)[\D]+
于 2012-07-12T11:35:16.210 回答
1

在红宝石中:

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
于 2012-07-12T16:45:28.417 回答
0

检查这个:

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

在此处查看您的示例

于 2012-07-12T11:42:09.187 回答
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)
于 2012-07-12T11:52:00.977 回答
0

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

于 2012-07-12T11:30:15.523 回答
0

请执行下列操作:

\S+$

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

如果只想匹配字母字符,可以使用以下命令:

\w+$

你可以在这里测试它们。

于 2012-07-12T11:34:56.227 回答
0

当您说捕获时,如果您希望获得命名捕获,而忽略其余部分,您可以执行以下操作:

(?:.+\s)(?<Country>.+)
于 2012-07-12T11:44:15.813 回答