0

我知道这已经被问了至少一千次,但我在这里找不到与此字符串中的名称匹配的正确正则表达式:

<td><div id="topbarUserName">Donald</div></td>

我想得到'Donald'这个名字,最接近的正则表达式是>[a-zA-Z0-9]+,但结果是>Donald。

我在 PureBasic 中编码(它的语法类似于 Basic),它使用 PCRE 库进行正则表达式。

任何人都可以帮忙吗?

4

4 回答 4

3

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

无论哪种方式,众所周知,正则表达式都不适合解析 HTML。

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

于 2012-06-19T21:48:20.997 回答
1

试试这个

它应该捕获任何字母/数字

>([\w]+)<

另外,我不确定您的项目限制是什么,但是做这样的事情会容易得多

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

在 jQuery 中而不是使用正则表达式。

于 2012-06-19T21:28:06.387 回答
1

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

于 2012-06-19T21:44:34.273 回答
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
于 2017-11-04T17:15:46.380 回答