正規表現で大文字と小文字を区別しないようにする方法こんにちは。JSL で正規表現検索を大文字と小文字を区別しないものにする最適な方法をご存知の方はいらっしゃいますか? たとえば、パス名からファイル拡張子を抽出したいのですが、拡張子が「.csv」か「.CSV」か「.cSv」かは関係ありません。次のコードを実行すると、拡張子が小文字のファイル名でのみ機能します。
filename = Regex(path, "(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
1 つの方法は、正規表現を実行する前にパス全体を小文字に変換することですが、さまざまな理由から、私はそれを実行したくありません。
filename = Regex(LowerCase(path), "(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
私が試した他の方法は、一致文字列で「(?i)」修飾子を使用することですが、エラーが発生します。
filename = Regex(path, "(?i)(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
「正規表現に量指定子 *、+、?、または { が見つかりました 無効な位置にある場合、'Regex' のアクセスまたは評価で結果は未定義になります。この修飾子は JSL ではサポートされていないと思います。何かアイデアはありますか?
自動化とスクリプトRe: 正規表現で大文字と小文字を区別しないようにする方法ファイル拡張子を抽出したい場合は、Regex を使用する代わりに、Word()、Words()、Item()、Items() 関数を確認することをお勧めします。
Re: 正規表現で大文字と小文字を区別しないようにする方法JMPの正規表現にはIGNORECASEフラグもありますが、ファイル名(または拡張子、あるいはその両方)だけが必要な場合は、正規表現以外の方法を使用することをお勧めします。
Names Default To Here(1);
path = Convert File Path("$SAMPLE_DATA/Big Class.jmp");
filename1 = Regex(path, "(.+\/)*([^\/]+)\.(JMP)$", "\2", IGNORECASE);
filename2 = Word(-2, path, "\/.");
filename3 = Word(-1, path, "\/");
Show(filename1, filename2, filename3);

正規表現(ソース, パターン, ( 、 >)
スクリプト ガイド > データの種類 > 正規表現 > 正規表現関数
Re: 正規表現で大文字と小文字を区別しないようにする方法このハイブリッドコードは
Names Default To Here( 1 );
path = "C:\users\big.cSv";
filename = "";
ext = Word( -1, path, "." );
If( Uppercase( ext ) == "CSV" | Uppercase( ext ) == "XLSX",
filename = Eval(
Parse(
"Regex(path, \!"(.+\/)*([^\/]+)\." || ext || "$\!", \!"\2\!")"
)
)
);
Show( filename );
私の好きな日本語は
Names Default To Here( 1 );
path = "C:\users\big.cSv";
filename = "";
ext = Word( -1, path, "." );
If( Uppercase( ext ) == "CSV" | Uppercase( ext ) == "XLSX",
filename = Word( -2, path, ".\/" )
);
Show( filename );
Re: 正規表現で大文字と小文字を区別しないようにする方法@jthi さん、ありがとうございます。どこかで見たことがあると思っていました。もちろん、スクリプト ガイドに載っていました。ハハ。