C# 使用正则表达式获取自定义标记之间的文本
我正在开发一种自定义编程语言,它将转换为C#,然后进行编译。如何实现以下目标 下面是我的自定义语言示例C# 使用正则表达式获取自定义标记之间的文本,c#,regex,parsing,C#,Regex,Parsing,我正在开发一种自定义编程语言,它将转换为C#,然后进行编译。如何实现以下目标 下面是我的自定义语言示例 Input { //variables are assigned here } Logic { //Logic is defined here } Output { //Output here } 在上面的代码中,我想将输入、逻辑和输出分成三个字符串, 中间部分将有兼容的C#(Java也通用)代码。使用RegEx分隔这三个块的最佳方法是什么 我没有使用任何解析器,因为我认为
Input
{
//variables are assigned here
}
Logic
{
//Logic is defined here
}
Output
{
//Output here
}
在上面的代码中,我想将输入、逻辑和输出分成三个字符串,
中间部分将有兼容的C#(Java也通用)代码。使用RegEx分隔这三个块的最佳方法是什么
我没有使用任何解析器,因为我认为它们会被过度使用,因为实际的代码是c#。您可以尝试以下方法:
Input[^\{]*\{([^\}]*)\}\nLogic[^\{]*\{([^\}]*)\}\nOutput[^\{]*\{([^\}]*)\}
第1、2、3组具有输入、逻辑和输出内容
编辑:
正如你所指出的,里面也可能有花括号。这是更新的正则表达式
Input(.*)Logic(.*)Output(.*)
以下是c#中的示例代码:
但坦率地说,许多其他情况也可能发生。请注意,即使是逻辑、输入和输出也可能包含在代码中。因此,明智的做法是使用其他方法来分隔块。说,
不要使用{},你可以使用一些不太可能的东西,比如说#开始##结束#greate!,但是想想这个场景。输入{var string=“Input{is here}”}逻辑{Logic is here}输出{Output is here}我后来考虑过,我会在一段时间内更新它,请稍候…Input GGG{Input is here}逻辑{Logic is here}输出{Output is here}。。。。这段代码不应该工作太多…你需要设置一个适当的格式。在输入{}和输出{}之间可以有什么?换行符、制表符、空格还有什么?你可能必须为此制定一个规则,否则很难确定所有的可能性
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"Input(.*)Logic(.*)Output(.*)";
string input = @"Input
{
{input is here}
}
Logic{
logic is here
}
Output{
output is here
}";
RegexOptions options = RegexOptions.Singleline;
Match match = Regex.Match(input, pattern, options);
Console.WriteLine("'{0}' found at index {1}", m.Value, m.Index);
}
}