c#中这种情况的正则表达式是什么?

时间:2013-07-03 07:08:59

标签: c# regex

所有 我有一些字符串可以在下面找到

\r\n1928A\r\n
\r\nabc\r\n
\r\n239\r\n

在句子中找到这些字符串的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式

\r?\n\w+\r?\n

如果您的单词之间只有1 \r?\n ...您可以使用此正则表达式

\r?\n\w+(?=\r?\n)

\w会匹配单个数字,字母或_

+是量词,它匹配先前的模式1到很多次

因此,\w+会匹配1到多个单词

?可选地匹配前面的模式..

因此,使用\r?我们会匹配\ r \ n可选


您的代码将是

List<String> lst=Regex.Matches(input,regex)
                      .Cast<Match>()
                      .Select(x.Value)
                      .ToList();

或者说得更清楚

foreach(Match m in Regex.Matches(input,regex))
{
    m.Value;
}

答案 1 :(得分:0)

假设您要匹配的字词在两个\r\n之间始终,您可能需要使用string.Split()而不是正则表达式:

string input = @"hello\r\nhow\r\nare\r\nyou?";
string[] words = input.Split(@"\r\n", StringSplitOptions.None);
// words == { "hello", "how", "are", "you?" }

if (words.Length >= 3)
{
    for (int i = 1; i < words.Length - 1; i++)
    // first and last elements ("hello" and "you?") are not between new lines
    {
        string word = @"\r\n" + words[i] + "\r\n";
        // do something with your words "how" and "are"
    }
}