我正在逐行解析包含语句的文件。我要:
- 识别所有包含作业的行。
- 替换某些类型的标识符(输入和输出)。
如果一行具有以下两种形式之一,则它是一个分配:
DataType Identifier = ...
Identifier = ...
数据类型必须为以下之一:“ R”,“ L”,“ H”,“ X”,“ I”。数据类型是可选的。数据类型和标识符周围的任何位置都允许有空格。包含语句的行示例:
L Input = ...
DigitalOutput = ...
R Output= ...
H AnalogInput=...
X Output = ...
解析以上语句后的预期结果将是:
L Deprecated = ...
DigitalOutput = ...
R Deprecated= ...
H AnalogInput=...
X Deprecated = ...
该文件还包含除赋值外的其他语句,因此它对于标识具有赋值的行并在这种情况下仅替换标识符很重要。我尝试使用正向查找和正向查找的正则表达式:
public void ReplaceIdentifiers(string line)
{
List<string> validDataTypes = new List<string>{"R","L","H","X","I"};
List<string> identifiersToReplace = new List<string>{"Input","Output"};
string = ...
Regex regEx = new Regex(MyRegEx);
regEx.Replace(line,"Deprecated");
}
MyRegex在表单上的位置(伪代码):
$@"(?<=...){Any of the two identifiers to replace}(?=...)"
后面的样子:
Start of string OR
Zero or more spaces,Any of the valid data types,Zero or more spaces OR
Zero or more spaces
前瞻:
Zero or more spaces,=
我没有设法正确设置正则表达式。如何写正则表达式?