VS2008 C#:正则表达并识别某些单词

时间:2009-12-17 17:19:29

标签: c# regex

我想使用正则表达式来识别字符串中的某些单词。

例如:

"bla bla bla |   First Name = John Doe | City = Denver | bla bla bla | State = CA | bla bla bla"

在上面的字符串中,是|对于单词分隔,我想解析First Name,City和State的内容,并将它们存储在哈希表中的某些位置。

我该怎么做呢?我认为最好的方法是使用正则表达式。

5 个答案:

答案 0 :(得分:4)

使用拆分会不会更容易?

示例:

var test = "bla bla bla | First Name = John Doe | City = Denver | bla bla bla | State = CA | bla bla bla";
var sections = test.Split('|');
var firstName = sections[1].Split('=')[1].Trim();
var city= sections[2].Split('=')[1].Trim();
var state= sections[4].Split('=')[1].Trim();

答案 1 :(得分:1)

使用Split()功能:

public class SplitTest {
    public static void Main() {

        string words = "This is a list of words, with: a bit of punctuation" +
                       "\tand a tab character.";

        string [] split = words.Split(new Char [] {' ', ',', '.', ':', '\t' });

        foreach (string s in split) {

            if (s.Trim() != "")
                Console.WriteLine(s);
        }
    }
}
// The example displays the following output to the console:
//       This
//       is
//       a
//       list
//       of
//       words
//       with
//       a
//       bit
//       of
//       punctuation
//       and
//       a
//       tab
//       character

答案 2 :(得分:1)

使用命名组非常简单......

    // named groups are very cool for this...
    public static Regex regex = new Regex("\\|(?:\\s*)(?<key>(\\w+)(\\s*))=(?<value>[^|]+)", RegexOptions.CultureInvariant | RegexOptions.Compiled);

    public static Dictionary<string, string> Extract(string line)
    {
        Dictionary<string, string> results = new Dictionary<string, string>();          
        foreach (Match match in regex.Matches(line))
        {
            var groupKey = match.Groups["key"];
            var groupValue = match.Groups["value"];
            if (groupKey.Success && groupValue.Success)
            {
                // add the group value trimmed as we might have extra blank spaces
                results[groupKey.Value.Trim()] = groupValue.Value.Trim();
            }
        }
        return results;
    }

答案 3 :(得分:0)

我会使用string.Split('|')和string.IndexOf(“=”)来解析元素。它肯定比正则表达式更直接。

答案 4 :(得分:0)

如果您的数据是一致的(即始终使用|和=作为分隔符),您可以使用字符串拆分方法获得数组结果。