1

我有一个包含多个记录的文本文件,每个记录都有一个新行,如下所示

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

如何使用上述格式解析此文本并仅将数据存储在两个方括号之间?[] 所以返回的结果看起来像这样。

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 回答