鉴于以下HTML内容(仅限于我要求的绝对最小):
我如何使用Regex提取Page Title
?
答案 0 :(得分:1)
正如其他人所评论的那样,正则表达式可能不适合防弹方法。例如。使用正则表达式,很难检查<title>
标记是否是HTML中引用字符串的一部分。对于像这样的问题,这是对StackOverflow的反复回应。但就个人而言,我认为你有一个观点认为解析器对于如此简单的提取会有点过分。如果您正在寻找一种当时大多数的方法,那么下列其中一种方法应该是冲浪的。
选项1:Lookbehind / lookahead
(?<=<title[\s\n]*>[\s\n]*)(.(?![\s\n]*</title[\s\n]*>))*
这使用lookbehind and lookahead作为标签 - .NET有一个复杂的正则表达式引擎,允许无限重复,因此你甚至可以检查标签名称和结束括号之间的空格/返回字符(参见this answer )。
选项2:捕获群组
<title[\s\n]*>[\s\n]*(.*)[\s\n]*</title[\s\n]*>
类似但稍微简单 - 整个正则表达式匹配包括开始和结束标记。第一个(也是唯一一个)捕获组(.*)
捕获它们之间感兴趣的位。
可视化: