登录后更精彩...O(∩_∩)O...
您需要 登录 才可以下载或查看,没有账号?立即注册
×
如何使用正则表达式提取json字段?
初学者RegExp问题.我在文本文件中有JSON行,每个都有稍微不同的Fields,但如果有的话,我想为每行提取3个字段,忽略其他所有字段.我如何使用正则表达式(在编辑板或其他任何地方)执行此操作? 例: [JavaScript] 纯文本查看 复制代码 "url":"http://www.netcharles.com/orwell/essays.htm",
"domain":"netcharles.com",
"title":"Orwell Essays & Journalism Section - Charles' George Orwell Links",
"tags":["orwell","writing","literature","journalism","essays","politics","essay","reference","language","toread"],
"index":2931,
"time_created":1345419323,
"num_saves":24 我想提取URL,TITLE,TAGS, 我想这就是你所要求的.我会暂时提供一个解释.这个正则表达式(由/ - 您可能不必将它们放在编辑板中)分隔匹配: "文字". (url|title|tags)正则表达式中的三个文字字符串"url","title"或"tags"中的任何一个 - 默认情况下,括号用于创建组,管道字符用于交替 - 如逻辑"或".要匹配这些文字字符,您必须转义它们. ":"另一个文字字符串. (另一组的开始.(第2组) (另一组(3) \\"文字字符串\"- 你必须转义反斜杠,否则它将被解释为转义下一个字符,你永远不会知道它会做什么. |要么... [^"]除双引号外的任何单个字符括号表示字符类/集,或匹配的字符列表.任何给定的类都匹配字符串中的一个字符.^在类的开头使用carat()会否定它,导致匹配器匹配类中未包含的任何内容. )第3组结束...... *星号导致前一个正则表达式(在本例中为第3组)重复零次或多次,在这种情况下,使匹配器匹配任何可能在JSON字符串的双引号内的内容. )"第2组结束,以及文字". 我在这里做了一些非显而易见的事情,可能会派上用场: - 第2组 - 使用反向引用取消引用时- 将是分配给该字段的实际字符串.获取实际值时这很有用.
- 表达式末尾的i使其不区分大小写.
- 第1组包含捕获字段的名称.
编辑:所以我看到标签是一个数组.当我有机会思考它时,我会在一秒钟内更新正则表达式. 你的新正则表达式是: /"(url|title|tags)" "(\\"|[^"])*"|\[("(\\"|[^"])*"(,"(\\"|[^"])*")*)?\])/i我在这里所做的就是替换我一直在使用的字符串正则表达式("((\\"|[^"])*)"),以及用于查找数组(\[("(\\"|[^"])*"(,"(\\"|[^"])*")*)?\])的正则表达式.没有那么容易阅读,是吗?好吧,我们将字符串正则表达式替换为字母S,我们可以将其重写为: \[(S(,S)*)?\]它匹配文字左括号(因此是反斜杠),可选地后跟逗号分隔的字符串列表和结束括号.我在这里介绍的唯一新概念是问号(?),它本身就是一种重复.通常称为"使前一个表达式可选",它也可以被认为是0或1个匹配. 使用相同的S表示法,这是整个脏的正则表达式: /"(url|title|tags)" S|\[(S(,S)*)?\])/i
这个问题有点老了,但我在我的电脑上浏览了一下,发现了那个表达。我通过他作为 GIST,可能对其他人有用。 编辑:
|