【问题标题】:Regular Expression Replace, can't insert simple character正则表达式替换,不能插入简单字符
【发布时间】:2013-05-18 02:21:50
【问题描述】:

我已经尽一切可能尝试了 2 个小时才让它发挥作用。

我正在使用代码(版本 1)中的搜索和替换选项,但无法使替换代码正常工作。

我想在一些字符之间添加一个分号。我这样搜索:

)}[a-z]

..而且效果很好。

我已经尝试了所有这些,但没有一个保留 [a-z] 部分,他们都删除/替换它。

)};\1
)};*1
)};[a-z]
)};\1\2
)};$1
)};($1)
)};(\1)
)};[$1]
)};[\1]

我已将其设置为使用 POSIX Basic 选项,但任何选项,设置都可以。我只需要它来简单地插入一个分号

【问题讨论】:

  • 什么语言?它可以有所作为。
  • 我不知道。我正在使用 POSIX Basic 在 Coda(版本 1)中使用它。那是一种语言吗?感谢您的帮助
  • 问题是您在搜索中忘记了 [a-z] 周围的括号。它需要是一个编号组。
  • 好的,这会有所帮助。我冒昧添加了标签。

标签: regex coda


【解决方案1】:

这应该可行:

s/\)\}([a-z])/)};\1/g

本质上,我们从字面上匹配一个右括号,后跟一个右大括号。然后我们匹配az 之间的一个字母,但是[a-z] 周围的括号使它成为我们可以引用的捕获组。然后我们可以(并且只有那时)在替换中使用\1。没有捕获组,它不知道\1 指的是什么。一个就可以了。

sed一起使用:

% echo 'hello)}world' | sed -Ee 's/\)\}([a-z])/)};\1/g'
hello)};world

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2018-07-13
    • 2013-03-13
    相关资源
    最近更新 更多