Regex 仅在指定的html标记之外匹配指定的文本

Regex 仅在指定的html标记之外匹配指定的文本,regex,Regex,我有一个任务,在这个任务中,我应该捕获指定的文本,这些文本不能介于标题(任何大小)和锚定html标记(以及 TfL是保持伦敦运转的官方组织。 是否可以使用正则表达式仅在这些标记之外匹配“TfL” 非常感谢 Peter。最后,我使用HtmlAgilityPack.HtmlDocument.SelectNodes()选择节点,然后检查选择中的节点是否为排除标记,是否有这样的父节点(递归) Public Const cAlphabet As String=“AÁÄBCČDĎEĚFGHIÍJKLĹMN

我有一个任务,在这个任务中,我应该捕获指定的文本,这些文本不能介于标题(任何大小)和锚定html标记
(以及
TfL是保持伦敦运转的官方组织。
是否可以使用正则表达式仅在这些标记之外匹配“TfL”

非常感谢


Peter。

最后,我使用HtmlAgilityPack.HtmlDocument.SelectNodes()选择节点,然后检查选择中的节点是否为排除标记,是否有这样的父节点(递归)

Public Const cAlphabet As String=“AÁÄBCČDĎEĚFGHIÍJKLĹMNŇOÓPQRŔŘSࢊUࢊVWXYÝZŽ0123456789”接受的chars
将节点变暗为HtmlNodeCollection=nothing
作为HtmlDocument的Dim文档=新HtmlDocument()
“div封装用于不在任何标记之间的文本。”
'iHtmlText是以文本形式保存html文档的变量'
doc.LoadHtml(String.Format({0}),If(iHtmlText,String.Empty)))
““查找此文本”可以是您要查找的任何文本”
'由于xpath的翻译功能,节点选择不区分大小写'
节点=doc.DocumentNode.SelectNodes(
String.Format(“/*[包含(translate(text(),'{0}','{1}'),'{2}')]”,
cAlphabet,cAlphabet.ToLower,“查找此文本”。ToLower)
将每个节点作为节点中的HtmlNode
如果(不是StedinSpecifiedNode(节点“a”、“h1”、“h2”、“h3”、“h4”、“h5”、“h6”)),则
'对此处的节点执行某些操作'
如果结束
下一个
以上代码中使用的ISNOTRENSTEDINSpeciiedNode函数:

私有函数不是作为布尔值的StedinSpecifiedNode(ByVal iNode作为HtmlNode,ByVal ParamArray IEExcludedHTMLTAGS()作为字符串)
Dim ret作为布尔值=False
如果(iNode.Name.IsIn(IEExcludeHTMLTAGS)),则
ret=假
ElseIf(iNode.ParentNode不是空的)然后
ret=IsNotOrNestedInSpecifiedNode(iNode.ParentNode,IEExcludedHtmlTags)
其他的
ret=真
如果结束
回程网
端函数
试试这个正则表达式

(?<=<(h\d|a[^>].*?)>)(TfL)(?=</(h\d|a)>)
(?)(TfL)(?=)

它将使用

中的所有TfL文本。使用HTML/XML/DOM解析器比使用regexp更容易。不确定您使用的是哪种语言,但以下是PHP的常用答案:
(?<=<(h\d|a[^>].*?)>)(TfL)(?=</(h\d|a)>)