我知道这已经被问了至少一千次,但我在这里找不到与此字符串中的名称匹配的正确正则表达式:
<td><div id="topbarUserName">Donald</div></td>
我想得到'Donald'这个名字,最接近的正则表达式是>[a-zA-Z0-9]+,但结果是>Donald。
我在 PureBasic 中编码(它的语法类似于 Basic),它使用 PCRE 库进行正则表达式。
任何人都可以帮忙吗?
如果您只使用编号组而不是整个匹配,则 Josh 的模式将起作用。如果您必须使用整个比赛,请使用类似(?<=>)(\w+?)(?=<)
无论哪种方式,众所周知,正则表达式都不适合解析 HTML。
解释:
(?<=)
用于检查当前项目之前是否出现了某些内容。
\w+?
将匹配任何“单词”字符一次或多次,但只要模式的其余部分匹配某些内容就停止,在这种情况下,?
可能会被忽略。
(?=)
用于检查当前项之后是否出现某些内容。
试试这个
它应该捕获任何字母/数字
>([\w]+)<
另外,我不确定您的项目限制是什么,但是做这样的事情会容易得多
$('#topbarUserName').text();
在 jQuery 中而不是使用正则表达式。
>([a-zA-Z]+)
应该做的伎俩。记住要正确分组。
为什么不使用简单的旧基本字符串函数呢?
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