ページ 11

正規表現について

Posted: 2015年9月27日(日) 11:31
by super
サイトのソース内に下記のようなソースがあります。
<meta property="og:description" content="正規表現勉強中!"/>

上記の”正規表現勉強中!”と書いてあるところを取得したいです。そこには日本語だけでなく、カタカナ、数字、漢字などすべてを含みます。

私が考えた正規表現は

<meta property="og:description" content="((?:.|\n)+)"/>

上記のものなのですが、日本語が適切に表示されず、<meta property="og:description" content="以降のものをすべて含んでしまいます。


” <meta property="og:description" content=" ” この文字列の後ろにあるものを取得したいです。

Re: 正規表現について

Posted: 2015年9月27日(日) 12:53
by naohiro19
"はエスケープ文字ですので\"とかかないといけません。

Re: 正規表現について

Posted: 2015年9月27日(日) 13:29
by みけCAT
条件にある最短の繰り返しにマッチさせるには、+のかわりに+?を使うといいかもしれません。

Re: 正規表現について

Posted: 2015年9月28日(月) 14:19
by YuO
XML (XHTML) 前提であるなら,正規表現

コード:

<meta property="og:description" content="([^"]*)"/>
という方法があるかと思います。
XML中で属性値が"で終わるので,"以外の文字のみ含む,という考え方です。
# 属性値としての"は"になるので,"は存在しないとして取り扱える。

Re: 正規表現について

Posted: 2015年9月28日(月) 23:58
by super
naohiro19さんみけCATさんYuOさん回答ありがとうございます。
返信遅れてしまいすいません。

試してみましたが、できませんでした。


”<meta property="og:description" content="([^"]*)"/>”この正規表現を実行して結果下記のようになり、タイトルが取れていませんでした。

['<meta property="og:description" content="']

タイトルが日本語だから表示されない、など関係あるのでしょうか?

Re: 正規表現について

Posted: 2015年9月29日(火) 12:03
by YuO
super さんが書きました:試してみましたが、できませんでした。
”<meta property="og:description" content="([^"]*)"/>”この正規表現を実行して結果下記のようになり、タイトルが取れていませんでした。
['<meta property="og:description" content="']
タイトルが日本語だから表示されない、など関係あるのでしょうか?
そもそも,結果がこのようになることはない (「"/>」というリテラルで終わる正規表現なので,マッチしたならば必ずこの文字列で終わる) のですが,どのように確認したのでしょうか。
putwsやstd::wcoutなどを使って出力しているのにロケール設定をしていない,などということはないでしょうか。

Re: 正規表現について

Posted: 2015年9月29日(火) 12:27
by みけCAT
super さんが書きました:タイトルが日本語だから表示されない、など関係あるのでしょうか?
そう思うなら、まずタイトルが英数字だけのデータを入力してテストし、問題を切り分けるといいと思います。

Re: 正規表現について

Posted: 2015年9月29日(火) 19:28
by super
Python

コード:

import re
twittitle = re.search('<meta property="og:description" content="([^"]*)"/>',html)
print twittitle.group()
このようなコードです。日本語は関係ありませんでした。

Re: 正規表現について

Posted: 2015年9月29日(火) 20:07
by super
私の手違いで違うディレクトリの同じ名前のファイルを実行していました。
本当にすいません。
目指していた通りにタイトルを取得できました。
たくさんのご回答ありがとうございました。

Re: 正規表現について

Posted: 2015年9月29日(火) 20:42
by super
すいません。
日本語は取得できているのですが、
関係ないところの日本語を取得していて、タイトルが取得できていませんでした。