我正在尝试找到单词TEST的匹配项,并将其替换为MTEXT,但是由于某些原因,它不起作用。但是,它确实适用于Python。
测试文件看起来像这样
TEXT
TEXT
TEXT
我使用了MultiLine选件,但仍然无法使用。
RegexOptions options = RegexOptions.Multiline;
Console.WriteLine($"{fileContents}");
MatchCollection mc = Regex.Matches(fileContents, @"^(TEXT ?)$", options);
foreach (Match m in mc)
{
Console.WriteLine("MATCH "+ m.Value);
}
我希望找到四场比赛,但我一无所获。
答案 0 :(得分:0)
我的猜测是,也许^
和$
并不是必需的。
sln建议使用此表达式:
(?<=^|\r?\n)\bTEXT\b
可以在c#
或python中使用。
我不太确定为什么它在Python中可以正常工作,^(TEXT ?)$
模式在这种情况下基本上不应该在Python中工作,但是显然我不对。
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"(?=^|\r?\n)\bTEXT\b";
string substitution = @"MTEXT";
string input = @"TEXT Some data before TEXT some data after
TEXTY Some data before TEXT
TEXT Some data before TEXT some data after
TEXT Some data before TEXT NOTTEXT ";
RegexOptions options = RegexOptions.Multiline;
Regex regex = new Regex(pattern, options);
string result = regex.Replace(input, substitution);
}
}