我希望有一个正则表达式来查找所有的花括号,并将它们替换为其他字符串。
例如,我希望将"{foo}“替换为"FOO”,将"{bar}“替换为"BAR”,将"{}“替换为”E 110空E 211“。如果输入为"abc { FOO } def { BAR } {BAR}“,则输出为"abc FOO def BAR空”。
不允许嵌套括号或不耦合的括号。如果字符"{“或"}”是必需的。应该加倍。因此,"{ def }“就是”{ def }“。
不允许{}中的其他字符串。比如说,我只想要"{foo}“和"{bar}”。因此,"abc {xyz} def“应该被识别为无效输入。
发布于 2009-11-13 02:56:02
如果你有负面的后置/看台,可用:
(?<!{){([a-z]+)}(?!})并替换为匹配组的值。
([a-z]+)匹配包含的字符串,(?<!{)确保在{之前没有第二个{,(?!})确保在}之后没有第二个}。
如果你没有后视镜,那么
(?^|[^{]){([a-z]+)}(?$|[^})发布于 2009-11-13 07:39:57
我将首先使用EMPTY替换EMPTY,而不使用正则表达式。
然后使用
(?<!{){(foo|bar)}(?!})匹配{foo}或{bar},但不匹配{}、{{anything}}或{anything}
反向引用1号包含匹配的文本。
所以代码片段看起来就像
Regex matches = new Regex(@"(?<!\{)\{(foo|bar)\}(?!\})", RegexOptions.IgnoreCase);
resultString = matches.Replace(subjectString, "$1".ToUpper());(我希望在字符串上调用ToUpper()是有效的;我不知道C#,所以如果我错了请纠正我)
https://stackoverflow.com/questions/1726823
复制相似问题