obsidian-notes/代码/提取路径.md
CSSC-WORK\murmur 3e6078442b init version
2024-04-15 11:19:57 +08:00

1.4 KiB

title updated created tags
提取路径 2022-03-14 07:47:18Z 2022-01-10 03:35:59Z
aardio
cadence
代码块
数据筛选

cadence的用户配置文件env中路径信息格式有些特殊。 键值中各路径信息之间用空格 分隔,路径信息中存在空格的,此路径信息放于""对之间,如

set psmpath = $psmpath E:\lib\psm\
set padpath = $padpath E:\lib\pad\
set viewpath = $viewpath "E:\usercfg\test path\"

透过现象看本质是选择算法的重要前提,不可先入为主,不可被表象误导。

此需求的本质,是从字符串中提取两种东西:

  1. 不含空格或引号的字符序列;
  2. 以引号开头和结尾的字符序列

故可采用以下方法:

若没有混排则可直接调用string.split进行分割

import console; 
var str = /*************
$viewpath "E:\usercfg\test path\" E:\lib\pad\ "E:\usercfg\test path 2\" $viewpath2
*************/

import preg
var pattern = //[^\s"]+|"[^"]*"
var regex = preg(pattern)
var res= {}
for m in regex.gmatch( str) { 
	table.push(res,m)
}
console.dump(res)

console.pause(true);

结果为

{
[1]="$viewpath";
[2]='"E:\\usercfg\\test path\\"';
[3]="E:\lib\pad\";
[4]='"E:\\usercfg\\test path 2\\"';
[5]="$viewpath2"
}
请按任意键继续 ...

提取所有键对的程序见

提取路径.aardio

#aardio #cadence #代码块 #数据筛选