首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >OS X 'RE错误:重复计数无效‘

OS X 'RE错误:重复计数无效‘
EN

Stack Overflow用户
提问于 2018-06-07 05:08:42
回答 1查看 4.1K关注 0票数 2

我正在尝试替换以下代码(以最简单的形式)

代码语言:javascript
复制
{filedir_9}file.jpg

使用

代码语言:javascript
复制
{filedir_7}file.jpg

使用

代码语言:javascript
复制
sed -i -e 's/(\{filedir_9\})([a-z\-\_0-9]+).jpg/\{filedir_7\}$2$3/g'

但是我得到了: RE错误:无效的重复计数

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-08 03:22:52

您可以使用

代码语言:javascript
复制
sed -i '' -e 's/{filedir_9}\([-a-z_0-9]\{2,\}\)\.jpg/{filedir_7}\1/g'

请注意,\{在POSIX BRE模式中打开一个限制量词,您需要{来匹配文字{

要在BRE POSIX模式中创建捕获组,您需要\(...\),而不是(...),并且在替换项中,您应该使用\1来引用组1的值。

在POSIX模式中,括号表达式中的转义序列不受支持,您应该将-放在模式的开头/结尾,转义它是不起作用的( \被视为文字\字符)。

此外,为了匹配点,您需要对模式中的.字符进行转义,如果它没有转义,则它与任何字符都匹配。

在替换字符串中,应该使用\1而不是$1 (类似Perl的占位符)。注意,您在组2和组3中使用了占位符,而您的(\{filedir_9\})([a-z\-\_0-9]+).jpg模式仅尝试捕获2个子字符串,因此没有组3(因此,没有使用$3\3的点,它是空的)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50729640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档