2016-10-15 7 views
-2

いくつかの正規表現を行う末尾削除し、私は、この文字列はマークが]]

正規表現から]]マークを取り除くことができますどのように出てSUSすることはできません。

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

文字列:

<item> 
      <title><![CDATA[Coronation Street star Jean Alexander dies aged 90]]></title> 
      <description> 

返さ: コロネーション・ストリートスタージャンアレクサンダーは死ぬ私が返さ欲しい90]

歳: 戴冠式ストリートスタージーンアレクサンダー死亡90

+0

<!\ [CDATA \ [(。*?\] \])

+0

xpathまたはdomを使用してそのタイトルノードから内部テキストを取得するのと同じくらい簡単です。または、正規表現に圧力がある場合は、 '<!\ [CDATA \ [(。*?)]]' –

答えて

0

私は、あなたがPythonで正規表現を使用することについての回答を希望していると推測します。

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

注::だから、ここで必要なアクションを実行し、いくつかのコードは、このコードは、コードhereを実行することができるのpython 2.8 下で実行されます。

コードについていくつかの点があります。コードがそのオブジェクトをインポートすると、正規表現オブジェクトのfindallメソッドが使用可能になります。正規表現に2つの終端括弧が表示されないようにするには、正規表現にちょっとした調整が必要です。結果は正しいデータのリストになり、そのリストは次のコード行で文字列に変換されます。

私はそれが簡単に個人的にこのような何かのためにPHPを使用して見つけたので、私はまた、あなたのPHPのバージョン5および7上で動作するPHPソリューションを紹介します:結果はとしてすぐに利用可能であるPHPで

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

$の要素1の文字列は、preg_matchが成功している限り一致します。

live codeを参照してください。

0

最後に角括弧をエスケープする必要があります。

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