2016-05-01 79 views
-1

,我有以下格式的字符串输出:的Javascript正则表达式失败

mp3 @ 0x75b225b8]Estimating duration from bitrate, this may be inaccurate 
[lavf] stream 0: audio (mp3), -aid 0 
[lavf] stream 1: video (mjpeg), -vid 0, 

Clip info: 
Release date: Songspk.LINK 
album_artist: Various Artists 
album: Kapoor & Sons (Since 1921) 
artist: Tanishk Bagchi, Arijit Singh & Asees Kaur 

composer: Amaal Mallik | Songspk.LINK 
disc: 1/1 
encoded_by: Lame 
genre: Bollywood Music 
title: Bolna - Songspk.LINK 
track: 1/1 
EpisodeID: Songspk.LINK 
copyright: Songspk.LINK 
TOPE: Amaal Mallik | Songspk.LINK 
TIT1: Songspk.LINK 
TIT3: Songspk.LINK 

我需要提取以下字段:

album: Kapoor & Sons (Since 1921) 
artist: Tanishk Bagchi, Arijit Singh & Asees Kaur 

我尝试以下,但不能提取的字段:

if(data.indexOf('album:') !== -1) { 
    this.artist = data.match(/artist: ([^']*)/)[1]; 
} 

编辑: 我能得到的最接近的是这样的:

/Clip info:\n(.*)\n(.*)\n(.*)\n(.*)/ 

倾倒出整个物体看起来不错。

[ ' artist: Tanishk Bagchi, Arijit Singh & Asees Kaur', 
    'Tanishk Bagchi, Arijit Singh & Asees Kaur', 
    index: 105, 
    input: 'Clip info:\n Release date: Songspk.LINK\n album_artist: Various Artists\n album: Kapoor & Sons (Since 1921)\n artist: Tanishk Bagchi, Arijit Singh & Asees Kaur\n composer: Amaal Mallik | Songspk.LINK\n disc: 1/1\n encoded_by: Lame\n' ] 

但试图引用索引1时,我得到TypeError:无法读取null的属性'1'。

+0

'/ artist:(。*?)\ n /' – adeneo

+0

谢谢。我试过/艺术家:(。*)/,这似乎也起作用。 – nitimalh

+0

可能有助于调试正则表达式:http://regexr.com/ –

回答

1

得到它/artist: (.*)/似乎工作

+0

实际上划伤..似乎捕获album_artist。 – nitimalh

1

I tried the following but cannot extract the fields :
if(data.indexOf('album:') !== -1) { this.artist = data.match(/artist: ([^']*)/)[1]; }

的问题是,您使用的是否定字符类[^']匹配任何字符,但'含。一条新线,而您需要匹配的其余部分,在行首的右侧出现“艺术家”一词后。

我相信你可以使用

^ artist: (.*) 

或 - 允许任何1+ 水平空格在该行的开始,随后用artist:再接着用0+水平空格,使用

^[^\S\r\n]+artist:[^\S\r\n]*(.*) 

请参阅this regex demo

该级别[^\S\r\n] ma给任何不是非空白字符而不是CR而不是LF的字符。

+0

这似乎工作。 Smt abt在node.js中做这件事,我似乎并没有把握。倾倒整个物体看起来不错。 [ '艺术家:Tanishk巴格奇,阿里吉特·辛格&阿西斯·卡尔', 'Tanishk巴格奇,阿里吉特·辛格&阿西斯·卡尔', 指数:105, 输入:“剪辑信息:\ N释放日期:Songspk.LINK \ n album_artist:Various Artists \ n album:Kapoor&Sons(自1921年起)\ n艺术家:Tanishk Bagchi,Ari​​jit Singh&Asees Kaur \ n作曲家:Amaal Mallik | Songspk.LINK \ n光盘:1/1 \ n encoded_by:Lame \ n'] 但试图引用索引1时,我得到TypeError:无法读取null的属性'1'。加正则表达式1。 – nitimalh

+0

这个问题意味着你没有得到一个匹配。确保你针对*字符串*而不是对象运行正则表达式。另外,如果它是有效的JSON,则可以使用JSON解析器而不是正则表达式。 –

+0

这对我来说似乎是一个混合对象,而不是JSON。 – nitimalh