正则表达式字符串,其中空格是可选的,修剪后仅跟 (.
本文关键字:修剪 字符串 空格 正则表达式 | 更新日期: 2024-10-31 01:49:46
假设我有
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) 和 Trim(trimaa) 和 RTRIM( abc ) 和 trim( A) 和 0trim";
我想获得输出为
"和TRIM$(000trim)和(trim000)和(abctrim)和RTRIM(trimaa)和RTRIM(abc)和RTRIM(A)和0trim";
如何实现所需的输出?
使用这个:
Regex.Replace(text, @"'bTRIM(?='s*'()", "RTRIM", RegexOptions.IgnoreCase)
正则表达式匹配紧跟 0 个或多个空格(包括制表符)和左括号(
trim
。 RegexOptions.IgnoreCase
是不言自明的...
编辑:添加一个(?<![$%])
,使其忽略具有前导%
或$
的trim
,如下所示:
Regex.Replace(text, @"'b(?<![$%])TRIM(?='s*'()", "RTRIM", RegexOptions.IgnoreCase)
你可以像这样做一个替换:
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");