2

我在中间某处有大量乱码数据:

"video_id": "hGosI8rBVe8"

从这里,我想提取hGosI8rBVe8. 请注意,我要提取的内容可以是任意长度,并且可以包括大写/小写字母和数字。这是我迄今为止尝试过的:

"video_id": "(.*)"

和:

"video_id": "([a-zA-Z0-9]*)"

但是他们在我想要返回的末尾处继续匹配方式。我很确定这是因为*(贪婪)......但我认为没有其他方法可以做到这一点,因为我想要返回的将是可变长度。

任何帮助表示赞赏,欢呼。

4

2 回答 2

3

通过附加?

"video_id": "([a-zA-Z0-9]+?)"

我也改为*前者+为0或更多,后者为1或更多。在这种情况下哪个更合适。

于 2010-09-17T02:17:48.013 回答
3

不应该仅仅因为它不包含在字符类中而"video_id": "([a-zA-Z0-9]*)"在结束之后匹配。我不确定你为什么认为它会这样做。"[a-zA-Z0-9]

但是,如果可用,.* 它将匹配更多字符,以便将"(.*)"正则表达式应用于My name is "Pax" and yours is "George"您:

Pax" and yours is "George

如果您有一个不支持非贪婪的正则表达式引擎,您可以使用:

"video_id": "([^"]*)"

这将基本上匹配",然后是最大数量的非"字符,然后是"再次。

于 2010-09-17T02:34:12.817 回答