2012-03-18 11 views
0

この文字列は[14:42:49] Any Nick Name: Message bla blaです。唯一必要なものはAny Nick Nameです。正規表現:日付とコロンの間の任意の文字列に一致します

私は正規表現が決してよくありませんでした。結果の特定の部分を取得する方法を覚えていません。私はこれまで来た:/\[([0-9]{2}(:|\])){3} (.+):/g[14:42:49] Any Nick Name:の結果。

確かにsubstrなどで最後と最初の部分を削除できましたが、簡単な方法はありませんか?

答えて

1

あなたの正規表現はほぼ正しいです。

var regexp = /^\[\d{2}:\d{2}:\d{2}\] (.+):/; 

これはxビーイングの数字で[xx:xx:xx] something:と一致します。 ^は文字列がそこから始まることを意味し、\dは数字を意味します。 gフラグはここには何も追加しません。

使用.exec、および最初のグループ(括弧内のマッチした文字)を取得するために[1]を使用します。あなたが望むだけの事はAny Nick Nameある場合

regexp.exec("[14:42:49] Any Nick Name: Message bla bla")[1]; 
// "Any Nick Name" 
+0

それが実際だおかげで、[3]私のため以来、結果は '[14:42:49] Any Nick Name:、49]、]、Any Any Nick Name'です。 match()関数を使ってグループにアクセスする方法はありますか? –

+1

@ elias94xx RegExpを使ってアクセスできます。$ 1(最初に取得したグループと$ 2 $ 3など) – Rezigned

+0

@ elias94: 'str.match(regexp)'は2つの要素を返します。私は正規表現を変更しましたが、編集前に私が使用していたものを使用しています。 – pimvdb

2

はここで、正規表現

/\[[^\]]+\]\s([^\:]+)/g 

// test with 
"[14:42:49] Any Nick Name: Message bla bla".match(/\[[^\]]+\]\s([^\:]+)/g); 

// "Any Nick Name" 
console.log(RegExp.$1) 
+0

これは、 '[not a date] blah blah:'にマッチします。 – huon

+0

@dbaupp私は "Any Nick Name"しか持っていません。 – Rezigned

+0

質問は特定の形式( '[xx:xx:xx]ニックネーム:... ')とマッチするよう求めていますが、これは何も空白でない角かっこのペアとマッチします)。 – huon

0

ですこれを使用できます:

^.*?\] (.*?): 

デモ:http://regexr.com?30btc(マッチしたグループを表示するために、各選択にホバー)

0

あなたはこのように(スペースを含む)]のための正の後読みを使用することができます。

(?<=]\s)[\w\s]+ 
+0

JavaScriptはこれらをサポートしていません – pimvdb

+0

@pimvdb良い点:) – Robbie

関連する問題