直到4年前,我在手背上知道正则表达式,但我还没有触及它们,因为我需要一些帮助。
如何构建正则表达式以将所有'whatever'
替换为'%whatever%'
,包括单引号?
我想按照以下规定转换以下字符串:
Original Convert To
hello 'world' hello '%world%'
'foo' bar '%foo%' bar
'foo bar' '%foo bar%'
foo 'bar' but gar 'har' foo '%bar%' but gar '%har%'
请注意esp。最后一个例子。我想要 lazy 匹配和不贪心的匹配。在最后一种情况下,贪婪的匹配将使用值foo
'%..%'`
我正在使用C#。我最接近的第一个是:
Regex.Replace(s, "[Hh][Ee][Ll]{2}[Oo] '.*'", "[Hh][Ee][Ll]{2}[Oo] '%.*%'");
但这显然不正确。我不知道如何找回单引号中的内容。
更新 谢谢大家的答案。他们都非常有帮助。我记得现在看着你的答案。我缺少的是一个字符实体引用或者它可以引用你之前所有模式匹配的东西。
答案 0 :(得分:3)
搜索'([^']+)'
并替换为'%$1%'
答案 1 :(得分:2)
答案 2 :(得分:1)
以下正则表达式如何:
var res = Regex.Replace(s, @"'(.*?)'", "'%$1%'");
答案 3 :(得分:0)
您可以使用这样的简单正则表达式:
(')([^']+)\1
并使用替换字符串:
\1%\2%\1
答案 4 :(得分:0)