首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript正则表达式新行破坏了bibtex解析

JavaScript正则表达式新行破坏了bibtex解析
EN

Stack Overflow用户
提问于 2011-08-24 20:15:13
回答 1查看 392关注 0票数 1

我正在尝试将bibtex文件读取到我的JavaScript脚本中。用于解析文件的正则表达式为:

代码语言:javascript
复制
/(.*)\s*=\s*[{"'](.*|.*\s+.*|.*\s+.*\s+.*|.*\s+.*\s+.*\s+.*|.*\s+.*\s+.*\s+.*\s+.*)[}"'],?/g

这就像我想要的那样工作:

代码语言:javascript
复制
@Article{journals/aim/Sloman99,
  title =   "Review of Affective Computing",
  author =  "Aaron Sloman",
  journal = "AI Magazine",
  year =    "1999",
  number =  "1",
  volume =  "20",
  url = "http://dblp.uni-trier.de/db/journals/aim/aim20.html#Sloman99",
  pages =   "127--133",
}

它给了我很好的key.value对,比如:“作者: Aaron Sloman”。

这不是:

代码语言:javascript
复制
@Article{journals/aim/Sloman99,
  title =   "Review of Affective Computing",
  author =  "Aaron
  S
  l
  o
  m
  a
  n",
  journal = "AI Magazine",
  year =    "1999",
  number =  "1",
  volume =  "20",
  url = "http://dblp.uni-trier.de/db/journals/aim/aim20.html#Sloman99",
  pages =   "127--133",
}

它只是省略了作者。

那么,我如何才能创建一个正则表达式来匹配一个条目,其中包含的换行数(不仅仅是“.*\s+”的重复次数)和它遇到的“or a }”一样多呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-24 20:28:46

我知道人们喜欢使用正则表达式来解析标记,这似乎是一种时尚……就像lady gaga,或者Fun Dip。但是如果你想有效地解析标记,你应该使用解析器或者编写解析器。

为什么,正则表达式是用来解析regular language的。大多数降价不能表示为NFADFA。正因为如此,使用正则表达式解析它们是...在最困难的时候是不可能的,在最容易的时候是慢的。

有几个很棒的JS bibtex解析器。

  • http://sourceforge.net/projects/jsbibtex/
  • http://code.google.com/p/bibtex-js/

是两个,我建议你看看那些...我知道您已经完成了创建正则表达式的工作,但我保证,当您向真正的解析器迈出这一步时,您的工作将变得容易得多。

这只是一个小例子,说明为什么您的正则表达式不好,而解析器更好。

匹配模式包括

代码语言:javascript
复制
;;;)(>$#@ = 'dfsa3 342 '}
((())))+++>$#@ = 'dfsa3@@//''''''''''''
>$#@ = 'dfsa3@@//'''}}}}"""

这些都不是好东西!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7175234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档