0

Ruby1.8.7またはJavascriptを検討します。

私は次の文字列を持っています:(GMT+02:00) Istanbulそして私は後のすべてをキャプチャしたいです)(閉じ括弧の後に含まれる空白に注意してください)

私が作成した正規表現は、望ましくない聖霊降臨祭が含まれていることを除いて、ほとんど機能しています。

\s\D*=>Istanbul

どうすればそれを修正できますか?これを行うためのこの正規表現はありますか?

編集

文字列は他の文字列にすることができます。(GMT+01:00) West Central Africa

この場合、私は欲しいWest Central Africa

したがって、一部の回答は機能しません。

申し訳ありませんが、それについて言及するのを忘れました。

ありがとう。

4

7 に答える 7

1

ポジティブルックビハインドアサーションは1つのオプションです。

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

(python regex libでテスト済み)

あなたの例のようなGMTオフセット定義の後の最初の単語を抽出するには...

(?<=\([\D]{3}[\+\-][\d]{2}:[\d]{2}\)\s)[\D]+
于 2012-07-12T11:35:16.210 に答える
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
于 2012-07-12T16:45:28.417 に答える
0

オプションの空白文字\s*を、正規表現内の他のすべての文字の間に貼り付けることができます。確かに、少し長くなります。

于 2012-07-12T11:30:15.523 に答える
0

以下をせよ:

\S+$

行末のスペース以外のすべてに一致します。

アルファベット文字のみを照合する場合は、次を使用できます。

\w+$

ここでテストできます

于 2012-07-12T11:34:56.227 に答える
0

これをチェックして:

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

あなたの例についてはここをチェックしてください

于 2012-07-12T11:42:09.187 に答える
0

キャプチャと言うとき、名前付きキャプチャを取得し、残りを無視したい場合は、次のようにすることができます。

(?:.+\s)(?<Country>.+)
于 2012-07-12T11:44:15.813 に答える
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 に答える