2013-02-22 73 views

回答

8

您可以使用此以下正则表达式:

>([^<]*)< 

,或者> [^ <] * <

然后消除不必要的字符,如 '<' & '>'

+1

你能解释的'[^ <]'的含义是什么? – 2015-07-09 13:47:12

+0

这不适用于' Alice' - 即嵌套标签内的文本。有什么想法吗? – PeterX 2016-02-12 02:02:42

3

在你的情况的链接,你可以只用第二个反向引用的正则表达式,它会抱着你感兴趣的文本。

既然你提到你的标签preg_match,我假设你想要这个PHP。

$matches = array(); 
$pattern = '#<title>(.*?)</title>#'; // note I changed the pattern a bit 
preg_match($pattern, $string, $matches); 
$title = $matches[1]; 

注意,这实际上是我的模式先回参考,因为我省略了周围的标签本身,这是没有必要的括号。

通常情况下,您不应该使用正则表达式来解析HTML文档,但我认为这可能是其中一种异常情况,因为标题标签应该只在页面上存在一次。

5

的最佳方式是使用断言,您的情况下,正则表达式应为:

(?<=\<title\>).*?(?=\<\/title\>) 

更多细节看看here

+0

如果换行符出现在内容中,这不起作用! – ZOXEXIVO 2014-10-13 20:05:21

2

我用这个作为正则表达式的替换功能:(?< +>)

+0

SMART答案!我喜欢你看待事物的方式 – 2016-09-14 23:56:25

相关问题