トップ
新規
一覧
単語検索
最終更新
ヘルプ
ログイン
アールメカブ
正規表現クラス
をテンプレートにして作成
開始行:
以下は http://module.jp/blog/regex_unicode_prop.html より...
今時の正規表現ではUnicodeブロックやUnicodeスクリプトを指...
2月売りのWEB+DB Pressの正規表現ネタ原稿がようやく終わりま...
\p{Prop}
といった形式でUnicodeにおける文字の特性(プロパティ)、言語...
\p{L} 表示可能な文字
\p{M} 他の文字と組み合わせて使用する文字
\p{Z} 区切り文字
\p{S} 記号
\p{N} 数字
\p{P} 句読点
\p{C} L,M,Z,S,N,P以外のすべての文字
\p{Ll} 小文字
\p{Lu} 大文字
\p{Lo} ヘブライ語や日本語などの大文字と小文字を持たない文...
\p{Sc} 通貨記号
とか。Unicodeスクリプトの場合日本語に絡んでくるのは
\p{Katakana} カタカナ
\p{Hiragana} ひらがな
\p{Han} 漢字
\p{Latin} 英数字
\p{Common} スペースや句読点など
など。ただしUnicodeスクリプトまでサポートしている正規表現...
\p{InHiragana} ひらがな
\p{InKatakana} カタカナ
\p{InHalfwidthAndFullwidthForms} 半角カタカナ
\p{InCJKUnifiedIdeographs} 漢字
といった感じ。ちなみにjava.util.regexとPerlのUnicodeブロ...
Unicodeスクリプトとブロックの違いがビミョーに見えるけど、...
m/(?:(?:\p{Hiragana}|\p{Katakana}|\p{Han}|\p{Latin}|\p{Co...
(?:\p{Inherited}|\p{Me}|\p{Mn})?)+/x;
こんな感じになるそうな。実際流通している文章はこれより多...
これでなにが嬉しいかというと、文字種ごとにモリモリ文字列...
import java.util.regex.*;
public class WordSplit {
public static void main(String[] args) {
String text = "漢字カナ混じりの文章をinputします";
Pattern p = Pattern.compile(
"(\\p{InBasicLatin}+|" +
" \\p{InHiragana}+|" +
" \\p{InKatakana}+|" +
" \\p{InCJKUnifiedIdeographs}+)", Pattern.COM...
Matcher m = p.matcher(text);
while (m.find()) {
String chunk = m.group(1);
System.out.println(chunk);
}
}
}
とか
#!/usr/bin/perl
use Encode qw/encode decode/;
use strict;
my $text = decode('EUC-JP', '漢字カナ混じりのビミョーな文...
my $pat = qr/(
\p{InBasicLatin}+ |
\p{InHalfwidthAndFullwidthForms}+ |
\p{Hiragana}+ |
\p{Katakana}+ |
\p{Han}+
)/x;
while ($text =~ /$pat/g) {
print encode('EUC-JP', $1), "\n";
}
__END__
とか書くだけで済んだりします。ちなみにこれらを実行すると
漢字
カナ
混
じりの
ビミョー
な
文章
を
input
します
という出力を得ることができます。
で、問題はこれらをサポートしていないPHPで、以前のPerlのよ...
<?php
$text = '漢字カナ混じりの文章をinputします'; // EUC-JP
$pattern = '/(
[\x21-\x7E]+ | # Latin-1
#(?:\x8E[\xA6-\xDF])+ | # HankakuKatakana
(?:\xA4[\xA1-\xF3])+ | # Hiragana
(?:\xA5[\xA1-\xF6])+ | # Katakana
(?:[\xB0-\xF4][\x00-\xFF])+ # Kanji
)/x';
if (preg_match_all($pattern, $text, $capture)) {
echo join("\n", $capture[1]), "\n";
}
?>
PHPはApache 2でも利用されているPCREライブラリのおかげ、ja...
終了行:
以下は http://module.jp/blog/regex_unicode_prop.html より...
今時の正規表現ではUnicodeブロックやUnicodeスクリプトを指...
2月売りのWEB+DB Pressの正規表現ネタ原稿がようやく終わりま...
\p{Prop}
といった形式でUnicodeにおける文字の特性(プロパティ)、言語...
\p{L} 表示可能な文字
\p{M} 他の文字と組み合わせて使用する文字
\p{Z} 区切り文字
\p{S} 記号
\p{N} 数字
\p{P} 句読点
\p{C} L,M,Z,S,N,P以外のすべての文字
\p{Ll} 小文字
\p{Lu} 大文字
\p{Lo} ヘブライ語や日本語などの大文字と小文字を持たない文...
\p{Sc} 通貨記号
とか。Unicodeスクリプトの場合日本語に絡んでくるのは
\p{Katakana} カタカナ
\p{Hiragana} ひらがな
\p{Han} 漢字
\p{Latin} 英数字
\p{Common} スペースや句読点など
など。ただしUnicodeスクリプトまでサポートしている正規表現...
\p{InHiragana} ひらがな
\p{InKatakana} カタカナ
\p{InHalfwidthAndFullwidthForms} 半角カタカナ
\p{InCJKUnifiedIdeographs} 漢字
といった感じ。ちなみにjava.util.regexとPerlのUnicodeブロ...
Unicodeスクリプトとブロックの違いがビミョーに見えるけど、...
m/(?:(?:\p{Hiragana}|\p{Katakana}|\p{Han}|\p{Latin}|\p{Co...
(?:\p{Inherited}|\p{Me}|\p{Mn})?)+/x;
こんな感じになるそうな。実際流通している文章はこれより多...
これでなにが嬉しいかというと、文字種ごとにモリモリ文字列...
import java.util.regex.*;
public class WordSplit {
public static void main(String[] args) {
String text = "漢字カナ混じりの文章をinputします";
Pattern p = Pattern.compile(
"(\\p{InBasicLatin}+|" +
" \\p{InHiragana}+|" +
" \\p{InKatakana}+|" +
" \\p{InCJKUnifiedIdeographs}+)", Pattern.COM...
Matcher m = p.matcher(text);
while (m.find()) {
String chunk = m.group(1);
System.out.println(chunk);
}
}
}
とか
#!/usr/bin/perl
use Encode qw/encode decode/;
use strict;
my $text = decode('EUC-JP', '漢字カナ混じりのビミョーな文...
my $pat = qr/(
\p{InBasicLatin}+ |
\p{InHalfwidthAndFullwidthForms}+ |
\p{Hiragana}+ |
\p{Katakana}+ |
\p{Han}+
)/x;
while ($text =~ /$pat/g) {
print encode('EUC-JP', $1), "\n";
}
__END__
とか書くだけで済んだりします。ちなみにこれらを実行すると
漢字
カナ
混
じりの
ビミョー
な
文章
を
input
します
という出力を得ることができます。
で、問題はこれらをサポートしていないPHPで、以前のPerlのよ...
<?php
$text = '漢字カナ混じりの文章をinputします'; // EUC-JP
$pattern = '/(
[\x21-\x7E]+ | # Latin-1
#(?:\x8E[\xA6-\xDF])+ | # HankakuKatakana
(?:\xA4[\xA1-\xF3])+ | # Hiragana
(?:\xA5[\xA1-\xF6])+ | # Katakana
(?:[\xB0-\xF4][\x00-\xFF])+ # Kanji
)/x';
if (preg_match_all($pattern, $text, $capture)) {
echo join("\n", $capture[1]), "\n";
}
?>
PHPはApache 2でも利用されているPCREライブラリのおかげ、ja...
ページ名: