删除尾标]]

时间:2016-10-15 07:28:11

标签: python regex

做一些正则表达式,我无法解释如何摆脱此字符串中的]]标记

正则表达式:

personSamples

字符串:

<title><!\[CDATA\[(.*?)</title>

返回: 加冕街明星让·亚历山大逝世90岁]]

我想要的回报: 加冕街明星让亚历山大去世,享年90岁

2 个答案:

答案 0 :(得分:0)

你最后也必须逃避方括号。

string = "<title><![CDATA[Coronation Street star Jean Alexander dies aged 90]]></title>"
result = re.findall(r"\[.*\[(.*?)\]\]", string)
print(result)

答案 1 :(得分:0)

我推断你想要使用带有python的正则表达式的答案。所以,这里有一些执行所需操作的代码:

import re
string = "<title><![CDATA[Coronation Street star Jean Alexander dies aged 90]]></title>"
result = re.findall(r"\[.*\[(.*?)\]\]", string)
print ' '.join(result) 

注意:此代码在python 2.8下运行 可以运行代码here

关于代码的几点。一旦代码导入该对象,就可以使用正则表达式对象的findall方法。您的正则表达式需要稍微调整一下,以便包含它们在正则表达式中不会出现两个终止括号。现在,结果将是一个包含正确数据的列表,然后该列表将通过下一行代码转换为字符串。

我发现个人使用PHP比较容易,所以我还会向您展示一个在PHP 5和7版本上运行的PHP解决方案:

<?php
$subject = "[CDATA[Coronation Street star Jean Alexander dies aged 90]]";
$pattern = "/\[.*\[(.*?)\]\]/";
preg_match($pattern, $subject, $matches);
var_dump($matches[1]);

使用PHP,只要preg_match成功,结果就会立即以$ matches的元素1中的字符串形式提供。

请参阅live code