正規表現でキャプチャー番号を誤認識して変換する問題
いつもお世話になり、ありがとうございます。
以下の不具合がありました。
私は12月一日にご飯を食べました。
まず上記のサンプル文で試してください。
このマクロは日付の半角数字と漢数字を統一するという補正のマクロです。
12月一日という変な表記を数字に統一したいのですが、マクロではドルマーク11と区別が付かずに12月の部分が消滅してしまいます。
本来キャプチャーは一回しか行われていないので、一番目のキャプチャーとして解釈されないといけないのに11番目のキャプチャーという存在しないキャプチャーとして扱われるので存在しないために消滅するということのようです。
これは仕様か不具合でしょうか?
batch_list = editor.filters;
//日数がおかしい。
batch_list.AddReplace("([0-9]月)一日","$11日",eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list.AddReplace("([0-9]月)二日","$12日",eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list.AddReplace("([0-9]月)三日","$13日",eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list.AddReplace("([0-9]月)四日","$14日",eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list.AddReplace("([0-9]月)五日","$15日",eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list.AddReplace("([0-9]月)六日","$16日",eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list.AddReplace("([0-9]月)七日","$17日",eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list.AddReplace("([0-9]月)八日","$18日",eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list.AddReplace("([0-9]月)九日","$19日",eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list.AddReplace("([0-9]月)十日","$110日",eeFindReplaceRegExp | eeFindReplaceCase,0);
batch_list.AddReplace("([0-9]月)二十日","$120日",eeFindReplaceRegExp | eeFindReplaceCase,0);
document.selection.BatchReplace(batch_list,eeReplaceAll,eeExFindRegexOnigmo);
いつもお世話になっております。江村です。
これは不具合ではなく、正規表現のそういう仕様になります。
$1 ではなく \1 と表記してください。
JavaScriptの引用符の中では、"\\1" となります。
よろしくお願いいたします。
回答ありがとうございます。
わかりました。後ろが数値のときは\\1で書きます。
ありがとうございます。
このトピックの投稿: 3