MarkLogic MLCP中-output_uri_replace正则表达式配置失败求助
MLCP -output_uri_replace 正则参数报错的解决办法
问题原因分析
你遇到的IllegalArgumentException,大概率是shell参数解析干扰或者MLCP参数格式细节没注意导致的:
- 如果你在Linux/macOS的bash环境下用双引号包裹参数,
$1会被shell解析为当前会话的位置参数(通常为空),导致MLCP收到的替换字符串无效。 - 另外要确保
-output_uri_replace的参数严格遵循匹配正则,替换字符串的格式,不要在正则内部额外添加逗号。
正确的参数写法
针对你保留文件路径中倒数第二个目录及后续内容的需求,按不同操作系统调整写法:
- Linux/macOS(bash):用单引号包裹整个参数,避免shell解析
$1mlcp [其他命令参数] -output_uri_replace '^.*(/[^/]+/),$1' - Windows(CMD):用双引号包裹即可,CMD不会解析
$1mlcp [其他命令参数] -output_uri_replace "^.*(/[^/]+/),$1"
补充实用示例
官方文档确实缺少这类实操示例,这里给几个常见场景的用法:
- 去掉根目录下的第一个层级
输入URI:/raw_data/docs/report.pdf→ 输出URI:/docs/report.pdf
参数:-output_uri_replace '^/[^/]+(/.*)$','$1' - 替换指定目录名
输入URI:/docs/old_version/notes.txt→ 输出URI:/docs/new_version/notes.txt
参数:-output_uri_replace '/old_version/','/new_version/' - 提取最后两级目录加文件名
输入URI:/data/2024/q4/invoice/001.pdf→ 输出URI:/invoice/001.pdf
参数:-output_uri_replace '^.*/([^/]+/[^/]+)$','/$1'
内容的提问来源于stack exchange,提问作者miles zarathustra
相关产品推荐
相关产品推荐

