【问题标题】:Maintaining a "variable" in regular expressions?在正则表达式中维护一个“变量”?
【发布时间】:2013-11-05 00:28:51
【问题描述】:

有没有办法使用正则表达式来匹配和替换为“变量字符串”之类的......

foo_1_a => bar_1_b
foo_2_a => bar_2_b
foo_3_a => bar_3_b

...

例如使用带有变量“var”的表达式

“将foo_var => [0-9]_a替换为bar_var_b

具体来说,我正在尝试使用 Ruby 从命令行获取一个正则表达式/替换并执行所有这些替换。谢谢。

【问题讨论】:

  • 您要使用字符串的一部分来替换吗?就像您将 foo_1_a 替换为 bar_1_b 一样,其中 1 来自字符串?
  • 是的,这正是我要找的。​​span>

标签: ruby regex


【解决方案1】:

如果我理解正确,您正在寻找反向引用替换字符串。这通常由\1$1 完成。数字1是之前匹配组的顺序。

所以将foo_2_afoo_(\d+)_a 匹配。这里括号创建了一个组。并且是第一组。所以将其替换为bar_\1_b\1 将包含 2

更多关于Back Reference

【讨论】:

    【解决方案2】:

    我们开始吧。

    result = "foo_1_a".match(/_([0..1])_/){ "bar_#{$1}_b" }
    puts result # "bar_1_b" 
    

    【讨论】:

      猜你喜欢
      • 2013-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 2014-04-13
      • 1970-01-01
      相关资源
      最近更新 更多