考虑Ruby 1.8.7或Javascript。
我有以下字符串:(GMT+02:00) Istanbul
我希望捕获)
之后的所有内容(注意括号后面包含的空格)
我创建的正则表达式几乎处理异常,包括不需要的空格。
\s\D*
=> Istanbul
我该如何解决这个问题并且这是这个的正则表达式?
修改
字符串可以是其他字符串,类似于(GMT+01:00) West Central Africa
在这种情况下,我想要West Central Africa
所以,有些答案是行不通的。
抱歉,我忘了提及。
感谢。
答案 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)
答案 4 :(得分:0)
答案 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)