我想编写一个正则表达式来提取字符串中两个标签<title>
之间的内容,但不包括这两个标签。
例如,我有以下内容:
<title>My work</title>
<p>This is my work.</p> <p>Learning regex.</p>
正则表达式
(<title>)(.*?)(<\/title>)
我想要提取
<title>My work</title>
中的My work
。我该怎么办?
这是一个示例链接:http://regex101.com/r/mD8fB0
我想编写一个正则表达式来提取字符串中两个标签<title>
之间的内容,但不包括这两个标签。
例如,我有以下内容:
<title>My work</title>
<p>This is my work.</p> <p>Learning regex.</p>
(<title>)(.*?)(<\/title>)
<title>My work</title>
中的My work
。我该怎么办?
这是一个示例链接:http://regex101.com/r/mD8fB0
>([^<]*)<
或者, >[^<]*<
然后消除不需要的字符,如'<'和'>'。
在您的情况下,您可以只使用正则表达式中的第二个反向引用,它将保存您感兴趣的文本。
由于您在标签中提到了preg_match
,我假设您想要这个功能用于PHP。
$matches = array();
$pattern = '#<title>(.*?)</title>#'; // note I changed the pattern a bit
preg_match($pattern, $string, $matches);
$title = $matches[1];
[^<]
的意思吗? - Amit Choukroun<charlie><bob>Alice</bob></charlie>
。有什么想法吗? - PeterX@AmitChoukroun
[]
表示字符或字符组列表,[]
中的^
特别 表示非,*
表示0个或更多个字符,所以在口语中可以理解为:"0-N个字符,除了"<"之外的任意字符。 - undefinedpreg_match_all('/>([^<]+)</', "<charlie><bob>Alice</bob></charlie>", $matches);
,$matches[1]
将包含纯粹的非空文本匹配项。 - undefined