Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード Twitter

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2008-05-14

[][]正規表現で数字の桁数を表す

InDesign正規表現対応となって、「あー、これで数字の桁数とか簡単に指定できるわ〜」とヌカ㐂びな皆さん、こんにちわ。

さっそくやってみたらいいよ。やればわかるさ、ダァ〜!

#1桁の数字だけを検索
\d{1}

はい、だめ〜。なんでダメかっていうと、今ヒットしてる所から再検索すると次に続く数字にもヒットしちゃう。野球なら連続ヒットだ。次行ってみよう。

#1桁の数字だけを検索
\b\d\b

惜しいっ! なんで惜しいかっていうと... 「1.234」とか「1,234」なんていう小数点やカンマがあると「.」「,」の手前が単語境界になるから。残念。切腹(古い...

#1桁の数字だけを検索
\b\d\b(?![\.,])

これでどうだ? 否定先読みで「.」「,」を含めないようにしてるわけだね。でも「123.4」の「4」にヒットしちゃう。頭隠して尻隠さず。B型のわたしはすでに辛い。

#1桁の数字だけを検索
(?<![\.,])\b\d\b(?![\.,])

うん、これで多分普通のテキストなら大丈夫。ちなみに、「hoge1hoge」とか「hoge1」とか「1hoge」とかアルファベットの中の桁数まで見たいなら、こんな感じかな。

((?<=[A-Za-z])\d(?=[A-Za-z])|(?<![\.,])\b\d(?=[A-Za-z])|(?<=[A-Za-z])\d\b(?![\.,])|(?<![\.,])\b\d\b(?![\.,]))

こうなると、ちょっとこんがらがってくる。選択はなるべく展開した方がいい。。。っていうより、いま考えたばっかりだから穴があるかもしれないけど^^ 普通は単語中にでてきたらそれは桁のある数字とみなさないからいいのだ。

あとの桁数は\d{2}とか適当にやってくれ。たまにうまく動かない時もあるけれど、きっと愛嬌だ。


ちなみに

hatenaブログ上では\(半角バックスラッシュ)が「\」になってしまっているけれど、(このご時世)この2つは完全にコードポイントの違う文字ですからね。お気をつけて。


追記

(追記:2010-03-18T00:41:30+0900)このページ、たまに参照されるようなので注意点を。InDesign CS4から単語境界の扱いが変わっています。(cf. 2008-12-16 - 名もないテクノ手

ですから、上記のように1桁だけの数字を検索したいなら

(?<![\d,\.])\d(?![\d,\.])

とすればいいでしょう。おそらくInDesign CS3でもうまくマッチするはずです。

jdashjdash 2008/05/15 15:30 先生、「1,234円」にはマッチしないんでしょーか。<未検証で書いています

seuzoseuzo 2008/05/15 17:04 あ、そうそう、ピリオドだけじゃなくて、カンマも単語境界だわ。修正しておきました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証