1

以下のような新しい行を持つ複数のレコードを含むテキスト ファイルがあります。

username ="Test1" :[Jul 01 2012]
username ="Test2" :[Jul 03 2011]
username ="Test3" :[Jul 28 2011]
username ="Test4" :[Jul 12 2010]

上記の形式でこのテキストを解析し、2 つの角かっこの間のデータのみを保存するにはどうすればよいですか? [] したがって、返される結果は次のようになります。

Jul 01 2012
Jul 03 2011
Jul 28 2011
Jul 12 2010

このタスクを達成するためだけに JavaScript を使用したいと考えています。

よろしくお願いします。

4

3 に答える 3

3

各行をループして、必要なデータを解析します。ここでは正規表現がうまく機能するはずです。

あなたの文字列が変数にあるとしましょうmyText

var lines = myText.split("\n"),
    dates = [], tempVar;
for(var i = 0, len = lines.length; i < len; i++){
    tempVar = lines[i].match(/^.*:\[(\w{3} \d{2} \d{4})\]/);
    if(tempVar !== null){
        dates.push(tempVar[1]);
    }
}

デモ: http://jsfiddle.net/Uqaj9/

于 2013-01-09T16:27:25.087 に答える
1
function extractBetweenBrackets(str) {
  return str.split(/\n/).map(function(x) {
    if (x.match(/:\[(.*?)\]/)) { return RegExp.$1; }
  });
}

var str = 'username ="Test1" :[Jul 01 2012]\n'
        + 'username ="Test2" :[Jul 03 2011]\n'
        + 'username ="Test3" :[Jul 28 2011]\n'
        + 'username ="Test4" :[Jul 12 2010]';

extractBetweenBrackets(str);
// => ["Jul 01 2012", "Jul 03 2011", "Jul 28 2011", "Jul 12 2010"]
于 2013-01-09T16:37:51.753 に答える
0

ここ:/[a-z]+ \d{2} \d{4}(?=\]$)/gim

[a-z]+    # multiple basic latin chars.
          # an empty space
\d{2}     # a 2 digit integer
          # an empty space
\d{4}     # a 4 digit integer
(?=\]$)   # followed by a closing square bracket and then an end-of-line

フラグ:

  • gグローバル用で、できるだけ多く一致させます
  • iは大文字と小文字を区別しません。これは最初の部分です
  • mこれは複数行用で、ドル記号を文字列の末尾ではなく行の末尾に一致させます
于 2013-01-09T16:35:55.973 に答える