■挨拶──────────────────────────
初めまして。sericaと言うものです。
なでしこを始めて1年程なので
公式バイブル片手に四苦八苦しつつ
楽しくプログラミングさせて貰っています。
特定記号「{}」の動作で
バグかと思う所があるので報告させて頂きます。
勘違いでしたら申し訳ありません。
先に謝らせて頂きます。
あと文章を簡潔に書くのが苦手なので長文になってしまいますが
ご容赦下さい。
【症状】
■症状──────────────────────────
「AB4321CD34EF」の様な文字列を
「~~{n}」の形で正規表現マッチしようとしても、
「」内での{}を変数指定として動作してしまうらしく、
数量子として認識されない事。
■推測──────────────────────────
変数nが存在すればその内容が適用され、
変数nが存在しない場合は{}を除いた文字列として扱われる模様。
{}は全角でも半角でも同じ?みたい。
■備考──────────────────────────
そして{n,}や{n,m}はエラー。
{,}や{,n}の形のはエラーではないのですが…
{n,}や{n,m}の形だとnとmが数字でも文字でもエラーが返ります。
─────────────────────────────
【再現方法】
■サンプルソース─────────────────────
C=3
サンプル=「AB4321CD34EF」
サンプルを「[0-9]{2}」で正規表現マッチ
それを言う
■再現手順────────────────────────
幾つか試したパターンを纏めた物です。
「AB4321CD34EF」を対象にした正規表現マッチの例に成ります。
────────────────────────────
例)n桁のアルファベットにマッチしたい時。
「[A-Z]{2}」表記は「[A-Z]2」と同じで
「アルファベット1字&2」を探しマッチしない。
「[A-Z]{4}」表記は「[A-Z]4」と同じで
「アルファベット1字&4」を探し「B4」がマッチする。
────────────────────────────
例)n桁の数にマッチしたい時
「[0-9]{2}」表記は「[0-9]2」と同じで
「数1字&2」を探し「32」がマッチする。
「[0-9]{4}」表記は「[0-9]4」と同じで
「数1字&4」を探し「34」がマッチする。
────────────────────────────
例)nの指定がアルファベット(数量子としては規定外?)の場合
「[0-9]{EF}」表記は「[0-9]EF」と同じで
「数1字&E1字&F1字」を探し「4EF」がマッチする。
また変数をC=3と宣言した場合は
「[0-9]{C}」表記は「[0-9]3」と同じで
「数1字&3」を探し「43」がマッチする。
「[0-9]C」表記は(当たり前ですが)
「数1字&C1字」を探し「1C」がマッチする。
Cという変数が無い場合は
「[0-9]{C}」表記は「[0-9]C」と同じ
「数1字&C1字」を探し「1C」がマッチする。
─────────────────────────────
【要望】
■解決案?────────────────────────
詳しくないので単純な案しか考えられないのですが
「{n}」の場合
「n=数字」なら変数じゃないハズ→数量子。
「n≠数字」なら数量子じゃないハズ→変数。
「,」が入る事も考えると
{}内の先頭=数字なら変数じゃないハズ→数量子。
{}内の先頭≠数字なら数量子じゃないハズ→変数。
とか…こんな形でしょうか
と分別出来そうなので自動識別が理想的かと思っています。
ただ処理的には重くなるのかな…とおもうと今一つ…
他は
①{}が全角なら変数、半角なら数量子。
②「」中の変数指定(「」の文字列扱いへのエスケープ?)に他の記号を使う。
③数量子n回の指定に他の記述方法を使う。
等が可能そうですがどれも
ソースの互換性を損ないそうですし、
知識も経験も乏しいのでロクに思いつきませんでした。
ごめんなさい。
─────────────────────────────
【バージョン】
■バージョン───────────────────────
バージョンが1.5324で確認。
他に過去版から1.0系、1.3系、1.4系を適当に1つずつDLして
各2パターンくらい試して同様の症状。
■PC環境─────────────────────────
OS:WindowsXP_SP3
CPU:Intel_E8500
─────────────────────────────
【その他】
■別な要望ですが─────────────────────
IME制御がスピンエディタとかで使えないのが不便。
IME制御を可能して欲しい。
─────────────────────────────