我是regex的新手,想显示所有包含字符串名称但忽略“ /”后的字符或内部目录的文件夹
仅使用正则表达式
(*spark?/)
下面是目录集:
/ app-logs / spark / logs / application_15262_85484
/ user / oozie / share / lib / lib_36456456 / spark
/ app-logs / spark / logs
/ app-logs / spark
/ apps / spark / warehouse
我的结果应该是:
/ app-logs / spark
/ user / oozie / share / lib / lib_36456456 / spark
/ app-logs / spark
/ apps / spark
答案 0 :(得分:1)
我们可能在这里寻找的表达式是:
(spark)\/?.*
,我们将其替换为第一个捕获组$1
。
const regex = /(spark)\/?.*/gm;
const str = `/app-logs/spark/logs/application_15262_85484
/user/oozie/share/lib/lib_36456456/spark
/app-logs/spark/logs
/app-logs/spark
/apps/spark/warehouse`;
const subst = `$1`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log(result);
答案 1 :(得分:0)
您的模式(*spark?/)
无效,因为在量词*
之前,捕获组的开头括号是无效的。 k后面的问号表示字符k
是可选的。
您可以使用重复模式来匹配正斜杠,然后不匹配正斜杠,然后匹配/spark
^(?:/[^/\n]+)+/spark
说明
^
断言字符串的开头(?:
非捕获组
/[^/\n]+
匹配/
,然后匹配1次以上,而不是/
或换行符)+
关闭非捕获组并重复1次以上/spark
匹配/spark