如何使正则表达式不区分大小写嗨。有人知道在 JSL 中使正则表达式搜索不区分大小写的最佳方法吗?例如,我希望从路径名中提取文件扩展名,并且我不希望扩展名是“.csv”还是“.CSV”或“.cSv”无关紧要。如果我尝试以下操作,它仅适用于扩展名为小写的文件名:
filename = Regex(path, "(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
一种方法是在对整个路径执行正则表达式之前将其转换为小写,但由于各种原因,我不想这样做。
filename = Regex(LowerCase(path), "(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
我尝试的另一种方法是在匹配字符串中使用“(?i)”修饰符,但出现错误:
filename = Regex(path, "(?i)(.+\/)*([^\/]+)\.(csv|xlsx)$", "\2")
“正则表达式发现量词 *、+、? 或 { 在无效位置,访问或评估“Regex”时结果未定义”。我猜测 JSL 不支持该修饰符。有什么想法吗?
自动化和脚本回复:如何使正则表达式不区分大小写如果您希望提取文件扩展名,我建议您检查 Word()、Words()、Item() 和 Items() 函数,而不是使用 Regex。
回复:如何使正则表达式不区分大小写JMP 中的 Regex 中也有 IGNORECASE 标志,但如果您只想要文件名(或扩展名或两者),我仍然建议使用除 Regex 之外的其他方法
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);

正则表达式(源,模式,( , >)
脚本指南 > 数据类型 > 正则表达式 > Regex 函数
回复:如何使正则表达式不区分大小写此混合代码有效
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 );
我首选的 JSL 是
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 );
回复:如何使正则表达式不区分大小写谢谢@jthi 。我知道我曾在某个地方见过这个。当然是在脚本指南里。哈哈。