2012-06-19 112 views
0

我知道这已被要求至少有一千次,但我无法找到一个合适的正则表达式将在此字符串匹配这里的名称中提取文本想要得到'唐纳德'这个名字,最接近的正则表达式是> [a-zA-Z0-9] +,但结果是>唐纳德。正则表达式从HTML标签

我在PureBasic中编写代码(它的语法与Basic类似),它使用PCRE库作为正则表达式。

任何人都可以帮忙吗?

回答

3

如果您只使用编号的组,而不是整个匹配,Josh的模式将起作用。如果你必须使用整个比赛,请使用类似(?<=>)(\w+?)(?=<)

无论哪种方式,正则表达式广为人知的是不擅长解析HTML。

说明: (?<=)用于检查是否在当前项目之前出现某些内容。 \w+?将匹配任何“单词” - 字符,一次或多次,但只要模式的其余部分匹配,就停止,因为这种情况?可能已被排除。 (?=)用于检查当前项目之后是否出现某些内容。

+0

哇,真正的正则表达式工作谢谢你能解释它我做了什么? – Nubcake

+0

好的正则表达式,Thorbear! –

+0

@ user1420635添加了对模式的解释 – Thorbear

1

试试这个

应该抓住任何一个字母/数字

>([\w]+)<

我也不太确定你的项目限制是什么,但它是很容易做的像这样

$('#topbarUserName').text();

jQuery中,而不要使用正则表达式。

+0

那现在给我 >唐纳德< – Nubcake

+0

确保尖括号都是正则表达式捕获,括号外。 –

+0

仍然是同样的事情:| – Nubcake

1

>([a-zA-Z]+)应该做的伎俩。记得要正确分组。

0

为什么不用普通的旧基本字符串函数来完成它?

a.w = FindString(HTMLstring.s, "topbarUserName") + 16 ; 2 for "> and topbar... 
If a > 0 
b.w = FindString(HTMLstring, "<", a) 
If b > 0 
c.w = b - a 
Donald.s = Mid(HTMLstring,a, c) 
EndIf 
EndIf 
Debug Donald