用javascript解析文本文件

用javascript解析文本文件,javascript,datetime,Javascript,Datetime,我有一个包含多条记录的文本文件,每条记录都有一行新行,如下所示 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 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来完成这项任务


提前感谢您的支持

循环遍历每一行,并解析出所需的数据。正则表达式在这里应该工作得很好

假设字符串在变量
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]);
    }
}
var lines=myText.split(“\n”),
日期=[],临时变量;
对于(变量i=0,len=lines.length;i

演示:

循环每一行,并解析出所需的数据。正则表达式在这里应该工作得很好

假设字符串在变量
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]);
    }
}
var lines=myText.split(“\n”),
日期=[],临时变量;
对于(变量i=0,len=lines.length;i

演示:

此处:
/[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
    表示多行,它使美元符号与行的结尾而不是字符串的结尾匹配

    • 这里:
      /[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
        表示多行,它使美元符号与行的结尾而不是字符串的结尾匹配
      函数提取回执之间(str){
      返回str.split(/\n/).map(函数(x){
      if(x.match(/:\[(.*)\]/){return RegExp.$1;}
      });
      }
      var str='username=“Test1”:[2012年7月1日]\n
      +'username=“Test2”:[2011年7月3日]\n
      +'username=“Test3”:[2011年7月28日]\n
      +'username=“Test4”:[2010年7月12日];
      抽提物夹带(str);
      //=>[“2012年7月1日”、“2011年7月3日”、“2011年7月28日”、“2010年7月12日”]
      
      函数ExtractBetweenBackets(str){
      返回str.split(/\n/).map(函数(x){
      if(x.match(/:\[(.*)\]/){return RegExp.$1;}
      });
      }
      var str='username=“Test1”:[2012年7月1日]\n
      +'username=“Test2”:[2011年7月3日]\n
      +'username=“Test3”:[2011年7月28日]\n
      +'username=“Test4”:[2010年7月12日];
      抽提物夹带(str);
      //=>[“2012年7月1日”、“2011年7月3日”、“2011年7月28日”、“2010年7月12日”]
      
      请阅读这篇正则表达式文章请阅读这篇正则表达式文章快速提问。如何更改行匹配代码.match(/^.*:[(\w{3}\d{2}\d{4})]/;因此,让我们假设有时括号中的数据可能是这样的格式[Mar 16 2011:11:52:51 GMT]@BaconJuice:你可以抓取
      []
      中的所有内容,无论其格式如何:
      /^.\[(.*)\]/
      如果你需要肝脏或肾脏,让我知道=)@BaconJuice:不,我不需要这样的东西。我只要你的第一个孩子,我们就扯平了-我只想问最后一个问题!我试着玩你的代码,但我似乎得到了一个错误的结果。如何将结果从“2012年7月1日”、“2011年7月3日”、“2011年7月28日”、“2010年7月12日”更改为“2012年7月1日”、“2011年7月3日”、“2011年7月28日”和“2010年7月12日”,基本上删除逗号并替换为换行符。请快速提问。如何更改行匹配代码.match(/^.*:[(\w{3}\d{2}\d{4})]/;因此,让我们假设有时括号中的数据可能是这样的格式[Mar 16 2011:11:52:51 GMT]@BaconJuice:你可以抓取
      []
      中的所有内容,无论其格式如何:
      /^.\[(.*)\]/
      如果你需要肝脏或肾脏,让我知道=)@BaconJuice:不,我不需要这样的东西。我只要你的第一个孩子,我们就扯平了-我只想问最后一个问题!我试着玩你的代码,但我似乎得到了一个错误的结果。如何将结果从“2012年7月1日”、“2011年7月3日”、“2011年7月28日”、“2010年7月12日”更改为“2012年7月1日”、“2011年7月3日”、“2011年7月28日”和“2010年7月12日”,基本上删除逗号并替换为换行符。