Ruby取代了模式的第一个外观

时间:2015-06-24 17:56:53

标签: ruby regex

任何人都可以帮我替换ruby中的模式吗?

我有一个这样的字符串:

abc <abc> def "<def>" 

规则是:用&lt;&gt;替换任何东西使用空字符串,但不要替换“&lt;&gt;”。用空字符串<abc>替换'',并保留"<def>"原样。

所以结果需要 abc def "<def>"

1 个答案:

答案 0 :(得分:1)

a = 'abc <abc> def "<def>"

<abc>替换为REPLACE_WITH

b = a.sub(/(?<!")<[^>]*>(?!")/,"REPLACE_WITH")
puts b

输出:

abc REPLACE_WITH def "<def>"

使用abc替换<abc>中的REPLACE_WITH

b = a.sub(/(?<!"<)(?<=<)[^>]*(?=>)(?!>")/,"REPLACE_WITH")
puts b

输出:

abc <REPLACE_WITH>  def "<def>"

如果您想全局替换(不仅是首次出现),请使用gsub代替sub

我不认识Ruby。这个语法就是我从查看其他在Ruby中使用正则表达式的答案中学到的。所以,我不确定语法是否正确。