为字符串中的每个项创建正则表达式搜索实例

时间:2012-06-05 21:38:07

标签: c# regex

using Visual.Web.Developer.2010.Express;

N00b在这里,
如何为string1中的每一行文本创建搜索实例?我想在其中完整地搜索string2,以查看string1's搜索实例中是否包含string2中每个项目的1行文本。 string1string2都包含由'\n'分隔的文本行。有一些明显的方法可以做到这一点吗?有人建议使用RegEx,但如何在string2中为string1中的每个项目添加一个RegEx来查找和打印匹配项。string2中有多个实例相关联到string1中的单个项目。

string1中的一些人:
Part_numbers
1017FOO
1121BAR
等...

string2中的一些人:
SUPERCOLA A 51661017FOOAINDO
DASUDAMA C 89891121BARBLO5W
等...

可能会稍后解决这个问题,但我希望它们的格式是这样的,仅供参考。

1017FOO匹配:
SUPERCOLA A 51661017FOOAINDO
+ 1017FOO匹配的另一个+
等...

提前谢谢!
寻找正确方向的指针,我应该使用什么方法

1 个答案:

答案 0 :(得分:3)

您的书面要求不需要正则表达式,因此我没有使用它们。如果你需要,你应该能够很容易地将它们合并......

string partNumbers = @"1017Foo
1121BAR
SomethingElse";
string searchText = @"SUPERCOLA A 51661017FOOAINDO
DASUDAMA C 89891121BARBLO5W";

string[] searchTerms = partNumbers.Split('\n');
string[] searchedLines = searchText.Split('\n');

StringBuilder output = new StringBuilder();

foreach(string searchTerm in searchTerms){
    int matchCount = 0;

    output.AppendLine(string.Format("For term: {0}", searchTerm.Trim()));
    foreach(string searchedLine in searchedLines){
        if(searchedLine.Trim().ToLower().Contains(searchTerm.Trim().ToLower())){
            output.AppendLine(searchedLine.Trim());
            matchCount++;
        }
    }

    if(matchCount == 0){
        output.AppendLine("There was no match");
    }

    output.AppendLine("== End of search ==");
}

Console.WriteLine(output.ToString());