Ruby 正则表达式 - 用文本中间的空格替换点

标签 ruby regex

我有一个很长的文本,我想用空格替换其中的点,但只能在文本的中间。 例如:

Domain:...................google.com

我需要这样:

Domain:                   google.com

我发现了这个用单个空格替换点的正则表达式:

str.gsub!(/(?<=:)\.+(?=[^\.])/, ' ')

但这还不够,因为它会产生:

Domain: google.com

我需要保留与点一样多的空格。 你会如何解决?

最佳答案

你快到了,你的正则表达式没问题,只需使用 String#gsub 的 block 版本计算替换匹配的长度:

▶ str = 'Domain:...................google.com'
#⇒ "Domain:...................google.com"
▶ str.gsub(/(?<=:)\.+(?=[^\.])/) { |m| ' ' * m.length }
#⇒ "Domain:                   google.com"

关于Ruby 正则表达式 - 用文本中间的空格替换点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39973522/

相关文章:

php - 使用 PHP+CSS 检测包含大写单词的行并使用粗体行设置样式

Java字符串用正则表达式分割

ruby-on-rails - Rails - 如何从 www.website.com 重定向到 website.com

ruby - 如何转置不同大小的 ruby 数组?

java - 如何使用正则表达式删除电子邮件地址中的点 (.) 字符

python - 如何找到给定正则表达式生成的最小、最大长度字符串?

用于计算音节的 Java 正则表达式

ruby - 在 Ruby 中使用 LSA 转换从一组文档中发现同义词

ruby-on-rails - Ruby 变量如何以及何时实例化

ruby - Ruby 1.9 如何处理源代码中的字符大小写?