【问题标题】:How can I use regex to replace a character in part of a string如何使用正则表达式替换部分字符串中的字符
【发布时间】:2018-08-31 15:13:34
【问题描述】:

我有以下字符串:

  This is part 1: and this is part 2

字符串以 2 个空格开头,在分隔符“:”之前有一部分,在分隔符之后有一部分。

我想用下划线替换分隔符之前的每个空格,除了行首的空格,并在分隔符之后保留空格。

最终结果应该是这样的:

  This_is_part_1: and this is part 2

分隔符之前的部分长度可变,空格数可变。

此正则表达式将用于 Splunk,它使用基于 sed 的替换机制。

我想要的有可能吗?如果有,怎么做?

【问题讨论】:

  • 多么有趣。为什么有人会在不添加评论来解释否决票背后的原因的情况下对一个问题投反对票?备注将帮助提出问题的人改进问题。

标签: regex sed replace splunk


【解决方案1】:
\b(\s)+(?=.*:)

这似乎可行。

  This is part 1: and this is part 2

替换为“_”

  This_is_part_1: and this is part 2

Demo

已编辑

上面的正则表达式将连续的空格替换为一个下划线。

如果要将连续空格替换为连续下划线为 1 到 1,必须使用另一个正则表达式,如下所示

(?<=\b|(?<!^)(?<!^\s))(\s)(?=.*:)

Demo

【讨论】:

  • 谢谢,我会试试你的建议,然后告诉你我的结果!
  • 在您的问题中,字符串中的空格都是一个字符长度,因此上述答案将起作用。但是,如果字符串中存在超过 2 个字符的连续空格,则上述正则表达式会将连续空格替换为一个下划线。如果要将连续空格替换为连续下划线,则必须使用另一个像这样的正则表达式.. (?regex101.com/r/LCxVPB/7
猜你喜欢
  • 1970-01-01
  • 2023-01-25
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多