【发布时间】:2016-09-28 06:19:26
【问题描述】:
背景
希望仅在由美元符号分隔的文本中(从不跨越行)用美元符号替换句点。例如:
Names: $annie.bettie.cindy.dannie.ellie$. Only $a$ names. $a.b.c.d.e.f$.
问题
following regex 几乎可以工作,但是太简单了:
/([[:alnum:]])\.([[:alnum:]])/g
如果在分隔符 ($) 之外存在匹配项,则会替换太多。
以下正则表达式:
/\$.*?\$/g
Matches and groups 分隔字符串:
姓名:$annie.bettie.cindy.dannie.ellie$。只有 $a$ 个名字。 $a.b.c.d.e.f$.
问题
如何组合这两个正则表达式,以便用另一个字符串替换句点?例如:
Names: $annie.bettie.cindy.dannie.ellie$. Only $a$ names. $a.b.c.d.e.f$.
最终会变成:
Names: `r v$annie$bettie$cindy$dannie$ellie`. Only `r v$a` names. `r v$a$b$c$d$e$f`.
我遇到的问题是匹配分隔点。
正则表达式将从运行 bash 的终端通过管道传输到 sed。
【问题讨论】:
-
也许this SO thread 可以带来一些启发。
-
你能解释一下你的预期输出吗?问题陈述说你需要在
$sometext$模式中用$替换.。特别是我没有得到r v部分以及模式末尾缺少的$
标签: regex sed substring grouping