我遇到的问题是我有一块JavaScript,我已经成功地从网站源码中删除了,现在我必须筛选以获得我正在寻找的具体值。
我需要找到flvFileName
并获取列出的所有文件名。在这种情况下,它是'trailer1,trailer2,trailer3'
。
起初我开始使用正则表达式来匹配开始和结束标签,然后匹配文件名并将它们提取到一个数组,但问题是列表中并不总是有三个视频。可能有零个或多个,因此匹配不起作用。任何关于这种方法的想法都不会让我继续滥用我的笔记本电脑?
... ,flashvars: {flvFileName: 'trailer1,trailer2,trailer3', age: 'no', isForced: 'true'} }); });
答案 0 :(得分:2)
您可以尝试使用RKelly将JavaScript解析为Ruby。
或者,由于Aaron似乎有abandoned RKelly,您可以尝试替换Johnson。
答案 1 :(得分:2)
假设它是一个字符串(或者你可以把它变成一个字符串)
p str.split(/flvFileName: '|', age/)[1].split(',')
#=> ["trailer1", "trailer2", "trailer3"]
这将分为三部分:
然后用逗号分隔好东西。
答案 2 :(得分:1)
如果以旧方式执行该怎么办?
start = string.index(flvFileName)
quoteStart = string.index("'", start)
quoteEnd = string.index("'", quoteStart)
trailersString = string.slice(quoteStart, quoteEnd)
trailers = string.split(",")
它不漂亮,但它有效。如果没有预告片,你可能需要为这种情况做些特别的事情。
答案 3 :(得分:1)
如何:\bflvFileName\s*:\s*("|')(?:\s*([^,\1\s]+)\s*,?)+(?<!,)\s*\1
你可能不得不逃避那些反斜杠;我不知道Ruby,但你会在.NET中。注意反向引用;这是上面的\1
。我正在使用它来表明文件名包含在匹配的"
或'
字符中。
所有\s
可能都是不必要的,但我将它们留在那里是彻底的。我假设特殊字符周围可能有任意数量的空格(:
,"
,,
等。 YMMV。
另外:([^,\1\s]+)
可能过于宽泛而无法描述文件名,具体取决于您认为有效的内容。您可能希望改为使用((?:\w|\.)+)
。
如果以上内容难以理解,请参考以下信息: regular-expressions.info/reference.html