让我说我有
string abc = "and TRIM$ ( 000trim) and (trim000) and (abctrim) and Trim(trima) and TRIM ( abc ) and trim( A) and 0trim"
我只想将TRIM()
函数更改为RTRIM()
,并希望模式忽略空格(如果有)并在(
之后考虑TRIM
我正在使用
Regex.Replace(abc, "(?i)([^A-Za-z0-9])TRIM([^A-Za-z0-9][(])", "$1RTRIM(");
以上代码的结果是
“和 RTRIM((000trim)和(trim000)和(abctrim)和修剪(trimaa)和 RTRIM(abc)和修剪(A)和0trim“;
我希望输出为
“和 TRIM $ (000trim)和(trim000)和(abctrim)以及 RTRIM (trimaa)和 RTRIM(abc)和 RTRIM(A)和0trim“;
如何实现所需的输出?
答案 0 :(得分:1)
使用此:
Regex.Replace(text, @"\bTRIM(?=\s*\()", "RTRIM", RegexOptions.IgnoreCase)
正则表达式匹配trim
,其后立即有0个或更多个空格(包括制表符)和左括号(
。 RegexOptions.IgnoreCase
不言自明......
编辑:添加(?<![$%])
,使其忽略trim
,其中包含%
或$
,如下所示:
Regex.Replace(text, @"\b(?<![$%])TRIM(?=\s*\()", "RTRIM", RegexOptions.IgnoreCase)
答案 1 :(得分:0)
你可以这样替换:
var input = @"and TRIM$ ( 000trim) and (trim000) and (abctrim) and Trim(trima) and TRIM ( abc ) and trim( A) and 0trim";
var pattern = @"(?i)\btrim(?:\s+|)(\([^)]+\))";
string res = Regex.Replace(input, pattern, "RTRIM$1");