■ 質問はここへ ■

1036 にジャンプ
No. 1036投稿者: よね日付: 2003/09/15 19:35:04
題名 : 数字の後に特定の文字をつける

ちょっと教えていただきたいのですが、
テキスト中の3桁・4桁の数字の後に特定の文字を入れることはできませんでしょうか?
(例えば「1234→1234★」「345→345★」)
置換でうまくできますでしょうか?

よろしくお願いします。

No. 1037 (1036へのコメント)投稿者: かぶねこ HP日付: 2003/09/15 21:29:24
題名 : Re:数字の後に特定の文字をつける

正規表現を使った置換で「\([0-9][0-9][0-9]*\)」を「\1★」で置き換えると、
ほぼそのような動作になると思います。数字の桁数が 3 桁以上であると全部置
換してしまいます。

数字を 3 桁と 4 桁のみに限りたいのであれば、まず 3 部分について
「\([0-9][0-9][0-9]\)」を「\1★」で置換した後、4 桁部分について
「\([0-9][0-9][0-9][0-9]\)」を「\1★」で置換します。もしかしたら他に桁数
限定方法があるかもしれませんが……。

No. 1038 (1037へのコメント)投稿者: よね日付: 2003/09/15 23:53:17
題名 : Re^2:数字の後に特定の文字をつける

うまく行きました。
どうも有難うございます。

No. 1039 (1037へのコメント)投稿者: 島田 HP日付: 2003/09/16 18:27:27
題名 : Re^2:数字の後に特定の文字をつける

島田です。かぶねこさんへ。
もう解決したようなので余計なツッコミになってしまいますが、
お気を悪くされなければ幸いです(汗)。

>数字を 3 桁と 4 桁のみに限りたいのであれば、まず 3 部分について
>「\([0-9][0-9][0-9]\)」を「\1★」で置換した後、
これでは 6 桁以上の数字も置換されてしまいますよね。
では、どうすればいいのか……。
「\([0-9][0-9][0-9]\)\([^0-9]\)」を「\1★\2」で置換すればよいかというと、
それだと文中に出てきた 3 桁数字は置換されますが、
単独で 3 桁の数字だけが書かれている行はダメでした。
上記の置換後、「\([0-9][0-9][0-9]\)$」でやり直さなければならない……。
何かもっとスムーズに行く方法はないのか、
私もよく悩んでしまう正規表現での置換問題です。

No. 1040 (1039へのコメント)投稿者: 島田 HP日付: 2003/09/16 18:40:15
題名 : Re^3:数字の後に特定の文字をつける

ああ、でも、私のやり方でも3桁以上がヒットしてしまう(大汗)。
最初に行う置換は
「\([^0-9\n]\)\([0-9][0-9][0-9]\)\([^0-9\n]\)」→「\1\2★\3」
でしょうか。なんか初心者質問掲示板から離れてしまい、すいませんでした。

No. 1041 (1040へのコメント)投稿者: かぶねこ HP日付: 2003/09/17 14:10:39
題名 : Re^4:数字の後に特定の文字をつける

島田さん、どうもです。

そうでした〜。この問題はときどき遭遇してるはずなのですが、
すっかり忘れていました。ご指摘ありがとうございます。

前後の文字は数字ではないという判断に改行ではさまれている場合を
含めるのはむずかしそうですね。タグつき正規表現は \n といっしょに
使えないので。


ヘッダのみ表示
順番に表示(No. 1036 から)


メールアドレスを表示するにはURLの後ろに &m=b89489c2 をつけてください。
ユーザー フォーラム一覧

http://www2k.biglobe.ne.jp/~araken/
http://0ban.com/araken/