给出一个包含代码的文件,我的程序使用流读取器读取该文件,并将其放入字符串中。 因此,对于此文件:
class A{
public void foo()
{
r="asdastest@asdf.com";
s="*asasdddsaa@test.asdf.com";
t="@asdf.com";
u="@pas.asdf.com nwe asda";
}
}
字符串是:
"class A{\r\n \r\n public void foo()\r\n {\r\n r=\"asdastest@asdf.com\";\r\n s=\"*asasdddsaa@test.asdf.com\";\r\n t=\"@asdf.com\";\r\n u=\"@pas.asdf.com nwe asda\";\r\n }\r\n}\r\n\r\n\r\n"
(忽略\ t,将其替换为“”)。
我得到一个正则表达式作为输入,正则表达式使用“ $”在“ CRLF之前”找到一条语句。
输入的正则表达式为:(?i)\u0040.{0,10}asdf\u002Ecom($|\s|\W).*
但是,当我在文本上执行正则表达式时,它只会找到一个结果。
如果我在表示代码的字符串中添加“ enter”而不是\ r \ n之一,则会显示其他结果。
由于我无法修改正则表达式,如何读取文件并获得我期望的4个结果?
读取文件的代码是:
using (StringReader sr = new StringReader(ParsingHelpers.ReadFromFile(FilesExtensions.Instance, Configuration.Implementation.Configuration.Instance, LogEngineWriter.GetInstance(), curFile, "FindByRegex")))
{
string bla=sr.ReadToEnd();
bla=bla.Replace("\t", " ");
fileStrBuilder.Append(bla);
}
正则表达式执行是我用多行和单行编写的正则表达式的常规匹配项。 匹配结果为:
@asdf.com\";\r\n s=\"*asasdddsaa@test.asdf.com\";\r\n t=\"@asdf.com\";\r\n u=\"@pas.asdf.com nwe asda\";\r\n }\r\n}\r\n\r\n\r\n"