2012-11-02 123 views
-5

我有一个HTML响应正文/字符串。该HTML内容的部分是这些字符串 -需要正则表达式html帮助

<h2><a href="javascript:;" class="user-name-class">MY_USER_NAME<b></b></a></h2> 

["media_detail","init",[false,"",null,true,1,4,"99999_XXXXX_99999",11836530,"00076f7474727febc37a8825d373a5be","\/p\/LdvJWSF-6b\/","\/accounts\/login\/"]], 

从这些我需要提取MY_USER_NAME99999_XXXXX_99999

我希望从正则表达式的摇滚明星的帮助。这是红宝石1.9.3。谢谢。

更新:我们使用正则表达式,因为这不是实时完成的,所以性能不是问题。

+4

我不会用正则表达式这一点。使用HTML/XML解析器。 –

+1

http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags – Gus

+1

这不是一个性能问题。正则表达式只是**无法正确解析HTML。甚至没有提到可由DOM解析器处理的无效HTML。 –

回答

3

第一个是HTML,所以你应该用HTML解析它,另一个是JSON,所以你可以使用一些JSON库。不要使用正则表达式。 It's evil

0

如果你不想使用HTML/JSON库,你可以得到的第一个具有:

str.gsub!(/<.*?>/, '') 

为正则表达式,你将不得不告诉我们更多关于格式的第二个串......什么是一致的,什么不是,等

0

您可以使用

s.split(/"user-name-class">/)[1].split(/</)[0] 

(见this demo

s.split(/\["media_detail"/)[1].split(/\[/)[1].split(/"?,"?/)[6] 

(见this demo

+0

所以我有这个大的HTML正文/字符串,我该如何将这个正则表达式应用到整个html内容? – kapso

+0

@ user310525 - 只需将整个html内容设置为字符串's'即可。你有没有检查演示链接? –

+0

我已经更新了这个问题,如果有帮助的话。谢谢。 – kapso