出産前後の痔にはご注意!

正規表現で可能かどうかもわからず質問しています。

単語を構成する文字長で検索は可能でしょうか。

例えば、
全角(2バイト)8文字、半角(1バイト)6文字 計全角11文字(22バイト)相当
全角(2バイト)3文字、半角(1バイト)16文字 計全角11文字(22バイト)相当
それぞれにマッチ

あ12いうえお  6文字相当
き1く234けこ  6文字相当
それぞれにマッチ

と言う感じです。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

以下、標準的な正規表現の話です。



基本的には無理です。(→ 無理矢理に膨大なパターンを詰め込めば可能。)
正規表現には全角/半角とか、1バイト文字/2バイト文字というような区別は無く、すべて「ある一つの文字」です。
また数を数える、計算するという能力もないので、この例のような「22バイト分の文字列」にマッチさせるのは困難です。

そもそも、1バイト/2バイトというのはShift_JISのことですよね? 世の中には他にも文字コードがあります。
UTF-8ならASCIIの範囲は1バイトですが、漢字は3バイト。UTF-16ならほとんどの文字が2バイト、一部4バイト。というように。

なお、多くの正規表現では文字をUnicodeで表し、\u~の形でコードポイントを指定します。また、\xもあります。
それらにより、ASCIIの範囲とそうでない範囲を分けた表現を作ることは出来ます。
    • good
    • 0
この回答へのお礼

早速有り難うございます。
利用している文字コードはユニコードです。
今まで全角は2バイトでアルファベットなどは1バイトと思っていましたが、ユニコードは違うことを今になり初めて知りました。

また正規表現に計算能力がないということで確実に難しいことは何かが判りました。
文字長をカウント可能なら全パターン一纏めで指定可能と考えていたのですが、無理ということで可能な限り大まかなパターンを詰め込むことにいたします。

お礼日時:2013/02/10 16:44

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング