2008年05月31日

正規表現で、文字列は全て全角ASCIIか?のチェック(Python編)


#全て全角ASCIIか?
#Pythonの正規表現で、渡された文字列が全て全角ASCIIかチェックします。(UTF-8向け)
#Python 正規表現 全角ASCII UTF8
regexp = re.compile(r'^(?:\xEF\xBC[\x81-\xBF]|\xEF\xBD[\x80-\xA0])+$')
result = regexp.search("ABCDEFGHIJK1234567890!#$")
if result != None :
print(u"すべてが全角ASCIIである".encode('shift_jis'))
else :
print(u"すべてが全角ASCIIではない".encode('shift_jis'))
#↓
#"すべて全角ASCIIである"

posted by 台北猫々 at 21:25| Comment(0) | TrackBack(0) | 技術メモ(Python)

2008年05月30日

正規表現で、文字列は全て全角ASCIIか?のチェック(Perl編)


#全て全角ASCIIか?
#Perlの正規表現で、渡された文字列が全て全角ASCIIかチェックします。(UTF-8向け)
#Perl 正規表現 全角ASCII UTF8
$str = "ABCDEFGHIJK1234567890!#$";
if ( $str =~ /^(?:\xEF\xBC[\x81-\xBF]|\xEF\xBD[\x80-\xA0])+$/ ) {
print encode('shift-jis', decode('utf-8', "すべてが全角ASCIIである\n"));
} else {
print encode('shift-jis', decode('utf-8', "すべてが全角ASCIIではない\n"));
}
#↓
#"すべて全角ASCIIである"

posted by 台北猫々 at 20:42| Comment(0) | TrackBack(0) | 技術メモ(Perl)

2008年05月29日

正規表現で、文字列は全て全角ASCIIか?のチェック(PHP編)


//PHPの正規表現で、渡された文字列が全て全角ASCIIかチェックします。(UTF-8向け)
//PHP 正規表現 全角ASCII UTF8
$str = "ABCDEFGHIJK1234567890!#$";
if (preg_match("/^(?:\xEF\xBC[\x81-\xBF]|\xEF\xBD[\x80-\xA0])+$/", $str)) {
echo "すべて全角ASCIIである"."<br>\n";
} else {
echo "全角ASCIIではない文字がある"."<br>\n";
}
//↓
//"すべて全角ASCIIである"

posted by 台北猫々 at 18:43| Comment(0) | TrackBack(0) | 技術メモ(PHP)

2008年05月28日

煉獄

ふと気づくと、
私の目の前に、私がいました。

その私が言いました。

「人間には愛という執着があり、
その執着ゆえに憎悪が生まれる。
生まれてしまった憎悪は行き場を探して彷徨い、
また新たな憎悪を生む、
憎悪を消す術を知らない人間の、この世界を
煉獄と言わずしてなんと言おうか?」
posted by 台北猫々 at 21:08| Comment(0) | TrackBack(0) | 夢日記

2008年05月27日

正規表現で、文字列は全て半角英数字か?のチェック(C++編)

「C++ Boostのインストール(Windows編)」
http://programmer-toy-box.sblo.jp/article/14267315.html
もしくは、
「C++ Boostのインストール(Windows + VisualC++ 2008編)」
http://programmer-toy-box.sblo.jp/article/14873765.html

でBoostがインストールされていることが前提です。

SJIS対応です。

#include <iostream>
#include <string>
#include <boost/regex.hpp>
using namespace std;

int main() {
boost::regex r5("^[0-9A-Za-z]+$");
boost::smatch m5;
string str5 = "abcdefghijklmnopqrstuvwxyz0123456789";

if( boost::regex_search(str5, m5, r5) ) {
cout << "すべて半角英数字である" << endl;
} else {
cout << "半角英数字でない文字がある" << endl;
}

return 0;
}

posted by 台北猫々 at 20:58| Comment(0) | TrackBack(0) | 技術メモ(Windows C/C++)

2008年05月26日

正規表現で、文字列は全て半角カタカナか?のチェック(なでしこ編)


「アイウエオワイウエオン」を「^[ア-ン゙゚]+$」で正規表現マッチ
それで条件分岐
 空ならば
  「半角カタカナではない文字がある」と表示
 違えば
  「すべてが半角カタカナである」と表示
posted by 台北猫々 at 21:46| Comment(0) | TrackBack(0) | 技術メモ(なでしこ)

2008年05月25日

あまり使わないツッコミシリーズ4

「顔がセクハラです!」
posted by 台北猫々 at 01:05| Comment(0) | TrackBack(0) | 日記

2008年05月24日

「やさしさ紙芝居」

水谷豊さんの「やさしさ紙芝居」を久しぶりに聴きました。
いい歌ですよね。猫

水谷豊さんは、軽妙で、飄々としていて、私の好きな俳優の一人です。最近、バラエティにちょいちょいと出演してくれて嬉しかったりします。

昔、会社の後輩達とカラオケに行った時に「やさしさ紙芝居」を歌ったら、キョトンとされてジェネレーションギャップに少なからずショックを受けたことを思い出しました。
posted by 台北猫々 at 23:00| Comment(0) | TrackBack(0) | 日記

2008年05月23日

正規表現で、文字列は全て半角カタカナか?のチェック(C++編)

「C++ Boostのインストール(Windows編)」
http://programmer-toy-box.sblo.jp/article/14267315.html
もしくは、
「C++ Boostのインストール(Windows + VisualC++ 2008編)」
http://programmer-toy-box.sblo.jp/article/14873765.html

でBoostがインストールされていることが前提です。

SJIS対応です。

#include <iostream>
#include <string>
#include <boost/regex.hpp>
using namespace std;

int main() {
boost::regex r4("^(?:[\xA6-\xDF])+$");
boost::smatch m4;
string str4 = "ハンカクカタカナデアル";

if( boost::regex_search(str4, m4, r4) ) {
cout << "すべてが半角カタカナである" << endl;
} else {
cout << "半角カタカナではない文字がある" << endl;
}
return 0;
}

posted by 台北猫々 at 21:39| Comment(0) | TrackBack(0) | 技術メモ(Windows C/C++)

2008年05月22日

正規表現で、文字列は全て半角カタカナか?のチェック(Java編)


/**
* 文字列が「半角カタカナ」のみか?
* 参考:
* http://www.unicode.org/charts/PDF/U3040.pdf
*/

private static final String P_HALF_KATAKANA_ONLY = "^[\\uFF65-\\uFF9F]+$";
/**
* 全て半角カタカナか?
* @param str チェック対象文字列
* @return はい:true いいえ:false
*/

public static boolean isHalfKatakanaOnly(String str) {
return str.matches(P_HALF_KATAKANA_ONLY);
}

posted by 台北猫々 at 21:27| Comment(1) | TrackBack(0) | 技術メモ(Java)

2008年05月21日

ことの葉ひらひら その22

「大切な人を失うことを何度経験しても、その悲しみに慣れることはない」

〜台北猫々〜
posted by 台北猫々 at 20:45| Comment(0) | TrackBack(0) | ことの葉

2008年05月20日

今日はすごい風でした。

午前中は強風がうなっていました。
で、傘が半壊してしまいました。

なんか出勤の道にすごい強風ポイントがあって、そこが鬼門なのですよね。結構、壊されます。

形状記憶合金のように、復活する傘ができるといいなぁ、などと思いつつ、出勤しました。猫
posted by 台北猫々 at 22:56| Comment(0) | TrackBack(0) | 日記

2008年05月19日

今日は代休的有給です。

先週の土曜日は一日仕事だったので、今日は自主的に有給という名の代休を取らせてもらいました。

で、久しぶりに株のデイトレードをして約2万円の儲けを出せました。儲けは出せたものの、やっぱり難しいですね。私のような優柔不断人間にとっては、売買タイミングがなかなか。。。(^^;

で、その後は近くの温泉に行き、洞窟風呂で癒されてきました。
posted by 台北猫々 at 17:22| Comment(0) | TrackBack(0) | 日記

2008年05月18日

今日は天気がよかったです

今日は天気が良かったので、ガーデニング(プランター1個、野菜ばかり)をやりました。何かを育てるというのは良いですね。

なんか、ゆったりとした一日でした猫
posted by 台北猫々 at 20:31| Comment(0) | TrackBack(0) | 日記

2008年05月17日

正規表現で数値を3桁毎のカンマ区切り形式に変換

$buf = "12345678901234567";
$res = preg_replace("/(\d)(?=(\d{3})+(?!\d))/", '\1,', $buf);
print($res);

//↓
//12,345,678,901,234,567
//になります。
//参照:
//http://mono.kmc.gr.jp/~oxy/w/?Regexp%20Lookahead
posted by 台北猫々 at 22:16| Comment(1) | TrackBack(0) | 技術メモ(PHP)

2008年05月16日

検索に引っかからないです。

以前は、一日あたり100件以上はGoogle検索でヒットしていたのに、今は10件程度しかヒットしていません。しばらくすれば元に戻るかな?と思っていたのですが、駄目です。もう、駄目なんでしょうか?
posted by 台北猫々 at 22:57| Comment(0) | TrackBack(0) | 日記

2008年05月15日

正規表現で、文字列は全て全角カタカナか?のチェック(C++編)

「C++ Boostのインストール(Windows編)」
http://programmer-toy-box.sblo.jp/article/14267315.html
もしくは、
「C++ Boostのインストール(Windows + VisualC++ 2008編)」
http://programmer-toy-box.sblo.jp/article/14873765.html

でBoostがインストールされていることが前提です。

SJIS対応です。

#include <iostream>
#include <string>
#include <boost/regex.hpp>
using namespace std;

int main() {

boost::regex r3("^(?:\x83[\x40-\x96])+$");
boost::smatch m3;
string str3 = "ゼンカクカタカナデアル";

if( boost::regex_search(str3, m3, r3) ) {
cout << "すべてが全角カタカナである" << endl;
} else {
cout << "全角カタカナではない文字がある" << endl;
}

return 0;
}

posted by 台北猫々 at 21:14| Comment(0) | TrackBack(0) | 技術メモ(Windows C/C++)

2008年05月13日

正規表現で、文字列は全て平仮名か?のチェック(C++編)

「C++ Boostのインストール(Windows編)」もしくは、
「C++ Boostのインストール(Windows + VisualC++ 2008編)」でBoostがインストールされていることが前提です。

SJIS対応です。

#include <iostream>
#include <string>
#include <boost/regex.hpp>
using namespace std;

int main() {
boost::regex r2("^(?:\x82[\x9F-\xF1])+$");
boost::smatch m2;
string str2 = "ひらがなである";
if( boost::regex_search(str2, m2, r2) ) {
cout << "すべてが平仮名である" << endl;
} else {
cout << "平仮名ではない文字がある" << endl;
}
return 0;
}
posted by 台北猫々 at 22:14| Comment(0) | TrackBack(0) | 技術メモ(Windows C/C++)

2008年05月12日

C++ Boostのインストール(Windows + VisualC++ 2008編)

コードなにがしにも投稿していますが、こちらにもメモ。

Boostのインストール方法のWindows + VisualC++2008の場合(ソースコンパイル版)です。

2008.05.10現在、VisualC++ 2008(9.0)用のBoostのGUIインストーラーは提供されていないので、ソースを入手して、コンパイル・インストールします。

2009.03.03 バイナリインストーラーが配布されていました。
「C++ Boostのインストール(Windows + VisualC++ 2008編)〜バイナリインストール」


【環境】
・WindowsXP SP2
・VisualC++ 2008 ExpressEdition

1.ソースの入手
Boost C++ Libraries
http://sourceforge.net/project/showfiles.php?group_id=7586
からboost_1_35_0.zip(2008.05.10現在の最新)をダウンロードします。

2.ビルドツールの入手
Boost C++ Libraries
http://sourceforge.net/project/showfiles.php?group_id=7586
からboost-jam-3.1.16-1-ntx86.zip(2008.05.10現在の最新)をダウンロードします。

3.作業フォルダへの解凍/展開
本稿では、C:\usr\local\boost_1_35_0を作業フォルダとします。1.と2.を解凍したものを、作業フォルダにコピーします。

BoostInstall_VC2008_00.jpg

結果として、作業フォルダは↑のようなファイル配置になっているはずです。

4.ソースのビルド(コンパイル)

DOSコマンドプロンプトを起動して、cdコマンドで作業フォルダに移動して、↓のコマンドを実行します。(画面の都合で折り返していますが、実際は1行です。)

bjam.exe --build-type=complete --toolset=msvc --prefix="C:\Program Files\Microsoft Visual Studio 9.0\VC" install

BoostInstall_VC2008_01.jpg

ビルドは相当時間がかかる(Intel Core2 Duoで数時間)ので、覚悟して下さい(笑

BoostInstall_VC2008_02.jpg

ビルド完了です。インクルードファイルは、C:\Program Files\Microsoft Visual Studio 9.0\VC\include\boost-1_35に展開され、ライブラリ・DLLファイルは、C:\Program Files\Microsoft Visual Studio 9.0\VC\libに展開されます。

5.VisualC++ 2008の設定

BoostInstall_VC2008_03.jpg

「ツール」→「オプション」→「プロジェクトおよびソリューション」→「VC++ディレクトリ」→ 「ディレクトリを表示するプロジェクト」→「インクルード ファイル」に C:\Program Files\Microsoft Visual Studio 9.0\VC\include\boost-1_35を加える。

完了です。
posted by 台北猫々 at 21:47| Comment(0) | TrackBack(0) | 技術メモ(Windows C/C++)

2008年05月11日

正規表現で、文字列は全て半角カタカナか?のチェック(Python編)


UTF-8対応です。


#全て半角カタカナか?
#Pythonの正規表現で、渡された文字列が全て半角カタカナかチェックします。(UTF-8向け)
#Python 正規表現 半角カタカナ UTF8
regexp = re.compile(r'^(?:\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F])+$')
result = regexp.search("。アイウエオカキクケコサシスセソタチツテトナニヌネノハイフヘホマミムメモラリルレロヤユヨワン゚")
if result != None :
print(u"すべてが半角カタカナである".encode('shift_jis'))
else :
print(u"すべてが半角カタカナではない".encode('shift_jis'))
#↓
#"すべて半角カタカナである"


※標準出力をUnicode→SJISに変換しているのは、開発環境がWindows+Eclipseの都合です。Windows+Eclipseのコンソールは、SJISエンコーディングオンリーなので。

posted by 台北猫々 at 17:04| Comment(0) | TrackBack(0) | 技術メモ(Python)