正则表达式 - 从前置的notelog

时间:2017-03-26 23:32:13

标签: regex

当前用户记录的注释会保存到单个文件中,并带有时间戳,用户ID和注释。

我想提取笔记的每个实例,并将其放入电子表格中。

对于用户名,我有\([\w']+?, [\w']+?[ \w]{0,2}\) :http://regexr.com/3fjf5

日期同样微不足道。

我正在努力的部分是抓住时间戳和用户名后面的文字。我尝试使用负向前瞻作为时间戳/用户名,但这不适用于日志中的最后一行,因为后面没有时间戳/用户名组合。

我有一个解决方案,包括附加分隔符,或使用正则表达式进行两次传递,但我很好奇这是否可以一次完成。

以下是文字示例:

br><br>13/03/2015 10&#58;00  (Stone, Fred B) &#58; Lorem ipsum dolor sit 
amet &#160; - Lorem ipsum dolor sit amet,.&#160; Lorem ipsum dolor sit amet, 
consectetur adipiscing elit. In velit massa, porta et arcu hendrerit, 
pellentesque pellentesque orci. Etiam ac ante pharetra, elementum nunc in, 
gravida lacus. Quisque sollicitudin, tellus at imperdiet condimentum, orci ante 
accumsan elit, sit amet lacinia enim purus eu nisl. Phasellus ullamcorper 
vestibulum tortor id fringilla.<br><br>2015-03-13T10&#58;00&#58;13  (Stone, Fred 
B) &#58; Quisque ipsum risus, cursus at purus in, dignissim molestie risus. 
Aliquam vitae auctor odio. Morbi condimentum sapien a augue accumsan, vitae 
consequat tortor feugiat. Nam quis consequat lectus. Duis nisl justo, imperdiet 
et ipsum nec, cursus volutpat leo.<br><br>13/03/2015 09&#58;58  (Stone, Fred B) 
&#58; <br>  Quisque ipsum risus, cursus at purus in, dignissim molestie risus. 
Aliquam vitae auctor odio. Morbi condimentum sapien a augue accumsan, vitae 
consequat tortor feugiat. Nam quis consequat lectus. Duis nisl justo, imperdiet 
et ipsum nec, cursus volutpat leo<br> Quisque ipsum risus, cursus at purus in, 
dignissim molestie risus. Aliquam vitae auctor odio. Morbi condimentum sapien a 
augue accumsan, vitae consequat tortor feugiat. Nam quis consequat lectus. Duis 
nisl justo, imperdiet et ipsum nec, cursus volutpat leo<br><br>11/03/2015 
11&#58;12 (Smith, Mark L) &#58; Assigned to&#58; Stone, Fred B L<br>Quisque 
ipsum risus, cursus at purus in, dignissim molestie risus. Aliquam vitae auctor 
odio. Morbi condimentum sapien a augue accumsan, vitae consequat tortor feugiat. 
Nam quis consequat lectus. Duis nisl justo, imperdiet et ipsum nec, cursus 
volutpat leo<br><br>11/03/2015 11&#58;09  (Johnson, Rod R) &#58; <br>  Quisque 
ipsum risus, cursus at purus in, dignissim molestie risus. Aliquam vitae auctor 
odio. Morbi condimentum sapien a augue accumsan, vitae consequat tortor feugiat. 
Nam quis consequat lectus. Duis nisl justo, imperdiet et ipsum nec, cursus 
volutpat leo<br><br>19/02/2015 15&#58;30 (Smith, Mark L) &#58; Assigned to&#58; 
Stone, Fred B LQuisque ipsum risus, cursus at purus in, dignissim molestie 
risus. Aliquam vitae auctor odio. Morbi condimentum sapien a augue accumsan, 
vitae consequat tortor feugiat. Nam quis consequat lectus. Duis nisl justo, 
imperdiet et ipsum nec, cursus volutpat leo

结果匹配(斜体)应如下所示:



13/03/2015 10:00(Stone,Fred B): Lorem ipsum dolor sit amet - Lorem ipsum dolor sit amet,。 Lorem ipsum dolor sit amet, 奉献精神。在velit massa,porta et arcu hendrerit, pellentesque pellentesque orci。 Etiam ac ante pharetra,elementum nunc in, 孕妇拉克斯。 Quisque sollicitudin,tellus at imperdiet condimentum,orci ante accumsan elit,sit amet lacinia enim purus eu nisl。 Phasellus ullamcorper 前庭tortor id fringilla。



2015-03-13T10:00:13(Stone,Fred B): Quisque ipsum risus,cuusus at purus in,dignissim molestie risus。 Aliquam vitae auctor odio。 Morbi condimentum sapien a augue accumsan,vitae consequat tortor feugiat。 Nam quis consequat lectus。 Duis nisl justo,imperdiet et ipsum nec,cursus volutpat leo。

即使在匹配中返回每个音符(包括时间戳和UID)也是可以接受的。 e.g。

<2016年3月13日10:00(Stone,Fred B):Lorem ipsum dolor sit amet - Lorem ipsum dolor sit amet,。 Lorem ipsum dolor sit amet, 奉献精神。在velit massa,porta et arcu hendrerit, pellentesque pellentesque orci。 Etiam ac ante pharetra,elementum nunc in, 孕妇拉克斯。 Quisque sollicitudin,tellus at imperdiet condimentum,orci ante accumsan elit,sit amet lacinia enim purus eu nisl。 Phasellus ullamcorper 前庭tortor id fringilla。

2 个答案:

答案 0 :(得分:0)

我希望这可以帮到你(我不确定我是否理解你):

/\d{2,4}[\/-]{1}\d{1,2}[\/-]{1}\d{2,4}[:0-9T&#;\s]*?\([\w']+?, [\w']+?[ \w]{0,2}\)/g

http://regexr.com/3fjvl

如果您愿意,可以使正则表达式更具体。

答案 1 :(得分:0)

您的输入字符串可能是这样的:(样本中错过了第一个<

var mytext = "<br><br>13/03/2015 10&#58;00  (Stone, Fred B) &#58; Lorem ipsum dolor sit amet &#160; - Lorem ipsum dolor sit amet,.&#160; Lorem ipsum dolor sit amet, consectetur adipiscing elit. In velit massa, porta et arcu hendrerit, pellentesque pellentesque orci. Etiam ac ante pharetra, elementum nunc in, gravida lacus. Quisque sollicitudin, tellus at imperdiet condimentum, orci ante accumsan elit, sit amet lacinia enim purus eu nisl. Phasellus ullamcorper vestibulum tortor id fringilla.<br><br>2015-03-13T10&#58;00&#58;13  (Stone, Fred B) &#58; Quisque ipsum risus, cursus at purus in, dignissim molestie risus. Aliquam vitae auctor odio. Morbi condimentum sapien a augue accumsan, vitae consequat tortor feugiat. Nam quis consequat lectus. Duis nisl justo, imperdiet et ipsum nec, cursus volutpat leo.<br><br>13/03/2015 09&#58;58  (Stone, Fred B) &#58; <br>  Quisque ipsum risus, cursus at purus in, dignissim molestie risus. Aliquam vitae auctor odio. Morbi condimentum sapien a augue accumsan, vitae consequat tortor feugiat. Nam quis consequat lectus. Duis nisl justo, imperdiet et ipsum nec, cursus volutpat leo<br> Quisque ipsum risus, cursus at purus in, dignissim molestie risus. Aliquam vitae auctor odio. Morbi condimentum sapien a augue accumsan, vitae consequat tortor feugiat. Nam quis consequat lectus. Duis nisl justo, imperdiet et ipsum nec, cursus volutpat leo<br><br>11/03/2015 11&#58;12 (Smith, Mark L) &#58; Assigned to&#58; Stone, Fred B L<br>Quisque ipsum risus, cursus at purus in, dignissim molestie risus. Aliquam vitae auctor odio. Morbi condimentum sapien a augue accumsan, vitae consequat tortor feugiat. Nam quis consequat lectus. Duis nisl justo, imperdiet et ipsum nec, cursus volutpat leo<br><br>11/03/2015 11&#58;09  (Johnson, Rod R) &#58; <br>  Quisque ipsum risus, cursus at purus in, dignissim molestie risus. Aliquam vitae auctor odio. Morbi condimentum sapien a augue accumsan, vitae consequat tortor feugiat. Nam quis consequat lectus. Duis nisl justo, imperdiet et ipsum nec, cursus volutpat leo<br><br>19/02/2015 15&#58;30 (Smith, Mark L) &#58; Assigned to&#58; Stone, Fred B LQuisque ipsum risus, cursus at purus in, dignissim molestie risus. Aliquam vitae auctor odio. Morbi condimentum sapien a augue accumsan, vitae consequat tortor feugiat. Nam quis consequat lectus. Duis nisl justo, imperdiet et ipsum nec, cursus volutpat leo" ;

//Define Regex patterns:

var dataReg = new RegExp(/(?:^|<br><br>)(\d{2}\/\d{2}\/\d{4}) (\d{2})&#58;(\d{2})\s*?\((\w+,[\w\s]+?)\)\s*&#58;\s*([^]+?)(?=<br><br>\d{2}\/\d{2}\/\d{4} \d{2}&#58;\d{2}|$)/g) ;

//Extract Notes and Data:
var myData = [] ;
while ((myData = dataReg.exec(mytext)) !== null) {
  console.log(myData);
}

正则表达式的描述:(regex Demo

  • /:正则表达式模式开始

  • (?:^|<br><br>):从开头搜索开始,或者在日期和时间之后开始新的<br><br>

  • (\d{2}\/\d{2}\/\d{4}) (\d{2})&#58;(\d{2}):提取日期,小时和分钟。

  • \s*?:传递空格

  • \((\w+,[\w\s]+?)\):在括号内(..)提取用户名

  • \s*&#58;\s*:传递:

  • ([^]+?):捕获所有用户备注

  • (?=<br><br>\d{2}\/\d{2}\/\d{4} \d{2}&#58;\d{2}|$):在到达下一个音符或字符串结尾时停止捕捉

  • /g:全局标志表示首次成功结果后不返回

注意:

[0]是所有匹配的字符串

[1]是日期,[2]是小时,[3]是分钟,[4]是用户名

[5]是用户注释