「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@735) [中] [未処理]
@735■ (#2323) 表正規表現ピックアップのパターン部分に『ー』を使用するとエラーが出る - FAM (2014-08-19 03:31) /中 未処理
【症状】どのような症状、現象か?
表正規表現ピックアップのパターン部分に『ー』を使用するとエラーが出る。
正規表現置換や正規表現マッチでは問題ないので正規表現が悪さをしているのではなく、表正規表現ピックアップだけがどこかおかしいようです。
ためしに『ー』を『\』でエスケープしてもやはりエラーが出ました。

【再現方法】サンプルソース、再現手順など
#ここから
テストは『あああ
ああーあ
いーいい
あああおあーさ』
テストの『あ』を『ー』に正規表現置換していう
テストの『ー』を『あ』に正規表現置換していう
テストが『いー.』に正規表現マッチをいう
テストはテストを改行で区切る
(テストの0から『あ』を表正規表現ピックアップ)を改行で配列結合していう
(テストの0から『ー』を表正規表現ピックアップ)を改行で配列結合していう
#ここまで

【要望】どのような解決が望ましいか?
エラーがでないように。

【バージョン】確認したバージョン
1.543

(#2324) Re: 表正規表現ピックアップのパターン部分に『ー』を使用するとエラーが出る - うぇいく (2014-08-19 21:51) /中 未処理
表正規表現ピックアップにて、配列の添え字を指定した場合のみ、この現象になるようです。
(添え字を省略するか-1を指定するかして、全体を対象にするとエラーになりません)

ざっと調べたところでは、このケースでは、正規表現オプションが利用されず、日本語の文字列を正しく扱えない状態となっていました。

また、今回の調査でついでに分かったのですが、正規表現のパターンを指定する際、内部で行っているオプション付加等をスキップする(事前に加工済みの文字列を指定する)こともできるようです。これは、「m」で始まる場合に有効になるのですが・・・・条件が簡単すぎて意図せず有効になりそうでちょっと怖いです。

加工済みの例
・もともとの指摘のエラーの出ているケースを書くと、以下の状態です。
 『あーあ』が『m#ー#』に正規表現マッチをいう
・本来はオプションが利用されて、以下のようになります。
 『あーあ』が『m#ー#gmk』に正規表現マッチをいう
 これは、
 『あーあ』が『ー』に正規表現マッチをいう
 と同じ意味です。
※「gmk」はオプションのデフォルトの値で、「k」が日本語(SJIS)指定。
・以下はエラーになってしまいます。パターンがmで始まるためです。
 『do not mind』が『mind』に正規表現マッチをいう
・mで始まる場合、自分で加工済みにするしかありません。
 『do not mind』が『m#mind#gmk』に正規表現マッチをいう

(#2323)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能