【问题标题】:Preserve space after delimeter regex在分隔符正则表达式后保留空格
【发布时间】:2018-11-19 21:19:45
【问题描述】:

我有下一个正则表达式,它保持“c”和分隔符不被替换

(?<=c[:=\s]|:=).+

但问题是如果分隔符后有空格,它也会替换它们:

c= test1 

例如将替换为:

c=test

如何在分隔符后保留空格以使其不会被替换:

c= test

我已经尝试了下一个:

(?<=c[:=\s]\s).+

但它不会对分隔符后不包含空格的字符串进行匹配和正确替换:

c=test1

【问题讨论】:

  • 你用什么语言做正则表达式? JavaScript、Python、Java?我会通过这个网站修补。 regex101.com
  • 我这里用的是python3。

标签: regex


【解决方案1】:

您可以匹配 c 后跟 : 或 = 以及零个或多个空白字符 \s+,然后捕获一组 (.+) 中的一个或多个字符。从单词边界\b 开始,以确保c 不是更长匹配的一部分。

作为替换,您可以使用第一个捕获组 \1,后跟替换文本。

匹配

\b(c[:=]\s*).+

替换为

\1test

Demo Python

【讨论】:

  • 谢谢,但这不是我想要的。我有两种情况: 1. 文本或任何其他后跟分隔符(= 或 :) 的序列被替换,但分隔符和变量名被保留:c=test1(此处匹配仅 test1)。 2. 分隔符后有空格时。在这种情况下,变量名称、分隔符和空格被保留,但后面的序列或文本被替换:c= test1(此处匹配仅 test1)。
  • 非常感谢!它按预期工作。你能告诉我替换的 \1 是什么吗?
  • 那是第一个capturing group
  • 谢谢!祝你晚上/一天愉快!
猜你喜欢
  • 2012-06-29
  • 1970-01-01
  • 2014-11-22
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
  • 2012-08-13
  • 1970-01-01
相关资源
最近更新 更多