[リストへもどる]
一括表示
タイトル後方参照\nと半角数字の混在について
記事No3061
投稿日: 2005/03/19(Sat) 23:49
投稿者はま坊
置換文字列の中に\1,\2といった後方参照と数字を隣接させたい場合はどのように表現すればよいでしょうか?


20050519

19apr2005としたいときに、

検索:(^....)(05)(.+)
置換:\3apr\1

として可能となりますが、

19042005としたいときに
置換:\304\1
としても
2003
となってしまいます。
\304 と \1と解釈されるためだと思いますが、どのように表現したらよいでしょうか。

タイトルRe: 後方参照\nと半角数字の混在について
記事No3062
投稿日: 2005/03/20(Sun) 11:04
投稿者K2
K2です。

> \304 と \1と解釈されるためだと思いますが、どのように表現したらよいでしょうか。

 Perlでは、{}を使って${3}とすればよいということになっている
ようですが、BREGEXP.DLLでは使えないようです。

 一旦、何か特殊な文字を挟んで、後からそれを消すとかいう
工夫が必要になると思います。
 

タイトルRe^2: 後方参照\nと半角数字の混在について
記事No3063
投稿日: 2005/03/20(Sun) 15:28
投稿者はま坊
ご回答ありがとうございました。
ご提案の方法で対処してみます。

タイトルRe: 後方参照\nと半角数字の混在について
記事No3064
投稿日: 2005/03/21(Mon) 21:14
投稿者NaKIT
> 19042005としたいときに
> 置換:\304\1
> としても
> 2003
> となってしまいます。
> \304 と \1と解釈されるためだと思いますが、どのように表現したらよいでしょうか。

数字の部分を16進表現で記述する手があります。
SJIS や EUC では「0」は「\x30」、「4」は「\x34」ですから、
> 置換:\304\1
は、
置換:\3\x30\x34\1
でうまくいきます。

あるいは、
置換:\3__dummy__04\1
などとしておいて、改めて一括で「__dummy__」を
空文字列に置換しなおすというのもありかと。

タイトルRe^2: 後方参照\nと半角数字の混在について
記事No3065
投稿日: 2005/03/22(Tue) 09:27
投稿者K2
K2です。

> 数字の部分を16進表現で記述する手があります。

 なるほど、その手がありましたか。でもなかなかすっと書けないですね。

# そういえば、昔どこかで、実際に正規表現で会話をする人がいる
# という話を読んだことがあるが、そんな人でないとその場で
# すっと出てこない表現ですね。

> あるいは、
> 置換:\3__dummy__04\1
> などとしておいて、改めて一括で「__dummy__」を
> 空文字列に置換しなおすというのもありかと。

 普通に思いつくのはこっちかな。@を使ってない文だったら@
を挟むとか、その場でいろいろ考えられますね。