我有一个要转换为英语的法语公式 见下文:
Initial: =SI(renamed="SI";SI(f1<f4;"SI(";"nok");"1;2")
Must be converted to: =IF(renamed="SI",IF(f1<f4,"SI(";"nok"),"1;2")
2个问题:
;必须转换为,(但不能在字符串“ xxx; xxx”
SI必须重命名为IF(但不能在字符串“ xxx SI xxx”之内
我将此正则表达式作为一个好的开始:([^=;]*)\(
https://regex101.com/r/OPyLh1/3
实际上,这只是IF / SI工作的示例,但是我大约有一百个单词可以在法语和英语之间转换
实现此目标的最佳方法是什么(正则表达式+代码的混合?) 我们正在用C#进行开发
答案 0 :(得分:1)
针对此问题的表达式的设计相当复杂,可能取决于我们可能提供的输入信息以及对技术的理解,而我对最后一个技术并不确定。然后,我们可以定义一组规则以查找我们希望替换的规则。例如,此表达式将使用逻辑OR捕获问题中包含的;
和SI
:
(SI)|["](;)[A-Z]|[0-9](;)["]|[)](;)["]
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(SI)|[""](;)[A-Z]|[0-9](;)[""]|[)](;)[""]";
string input = @"=SI(renamed=""SI"";SI(f1<f4;""SI("";""nok"");""1;2"")";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
如果不需要此表达式或您希望对其进行修改,请访问regex101.com。
jex.im可视化正则表达式: