任何人都可以帮我替换ruby中的模式吗?
我有一个这样的字符串:
abc <abc> def "<def>"
规则是:用&lt;&gt;替换任何东西使用空字符串,但不要替换“&lt;&gt;”。用空字符串<abc>
替换''
,并保留"<def>"
原样。
所以结果需要
abc def "<def>"
答案 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中使用正则表达式的答案中学到的。所以,我不确定语法是否正确。