如何使用正则表达式查找文本文件中的每个特定字符串

时间:2012-04-26 06:51:53

标签: c# regex

我需要搜索并获取“# XXX YYY”的每个实例,另一个例子是“# LOL foo”或“#HAHALOL omgpls”(因为我缺乏想象力而烦恼:P。如果我能在文本文件中获取基于此搜索的所有匹配的索引。这样会很好。

在文本文件中。我已经尝试了几次使用正则表达式,但我似乎无法让它工作。

“#”总是存在,然后有一个空格,然后是一串未知的长度,但通常少于5个字符。然后又有一个空格,然后是一个长度不明的同一个字符串。

2 个答案:

答案 0 :(得分:3)

试试这个正则表达式

#\s\w+\s\w+

例如

bool ok = System.Text.RegularExpressions.Regex.IsMatch("# XXX YYY", @"#\s\w+\s\w+");

\s  --> space
\w  --> any word character
+   --> variable length

请参见Quick Reference

编辑:

MatchCollection matches = Regex.Matches("abcde # XXX YYY  abcde", @"#\s\w+\s\w+");
foreach(Match  m in matches)
{
    string value = m.Value;
    int indexOfInput = m.Index;
}

答案 1 :(得分:1)

如果你只是在谈论句子中的几个单词,那么你必须匹配像

这样的模式。
"#aaaa"
"#aa aa"
"#aa      aaaaa" 

正确的正则表达式必须是:

"#\w+ ?\s?\w+"

匹配:

\w+ - 1-N words
?\s - presence or absence of a space after first word
?\w+ - presence or absence of a second word with 1-N number of characters