【问题标题】:C# Regex to match the word with dotC# 正则表达式用点匹配单词
【发布时间】:2011-08-07 12:05:05
【问题描述】:

敏捷的棕色狐狸跳过 懒狗”是英语 pangram,字母表!也就是说,一个短语 包含所有字母 字母表。它已用于测试 打字机字母表。和电脑 键盘,以及其他应用程序 涉及所有的字母 英文字母。

我需要获取“字母表”。正则表达式中的单词。在上面的文本中有 3 个实例。它不应包含“字母!”。我刚刚用

尝试了正则表达式
 MatchCollection match = Regex.Matches(entireText, "alphabet."); 

但这会返回 4 个实例,包括“字母!”。如何省略这个并只得到“字母表”。

【问题讨论】:

    标签: c# regex vb.net c#-4.0 c#-3.0


    【解决方案1】:

    . 是正则表达式中的特殊字符,可以匹配任何内容。尝试逃避它:

     MatchCollection match = Regex.Matches(entireText, @"alphabet\.");
    

    【讨论】:

    • 在几秒钟内得到相同的答案:)
    • 嗨,Harpyon,这个表达式没有返回任何结果。如果我只输入“字母”,则有 4 个实例。 c# 有什么特定的语法吗?
    • 你确定它不起作用吗?我无法测试它的 C# 部分,但是当我在 RegexHero 上测试它时,正则表达式似乎正在工作。
    • 嗨 Harypyon,C# 想要这个选项并且它有效.. 谢谢... RegexOptions myRegexOptions = RegexOptions.None;正则表达式 myRegex = new Regex(strRegex, myRegexOptions);
    • 这不是很明显,我加了下划线:要使表达式起作用,需要在字符串前添加«@»符号。
    【解决方案2】:

    . 是正则表达式中的特殊字符。你需要先用斜线转义它:

    Regex.Matches(entireText, "alphabet\\.")
    

    斜线最终变成双斜线,因为字符串中的\ 必须反过来用另一个斜线转义。

    【讨论】:

    • 通常正则表达式字符串最好是逐字逐句
    • @manojlds:我希望你同意这是一个偏好问题。
    • 是的,但是已经很复杂的正则表达式会到处乱扔\\。
    • 谢谢大家,但没有返回表达式的结果。是否有像 "^ $" 这样的 c# 特定表达式?
    • @user712307 - 好的,你的 cmets 让它更清楚一点。你是如何初始化整个文本的?
    【解决方案3】:

    “。”在正则表达式中有特殊含义。转义它以匹配句点

    MatchCollection match = Regex.Matches(entireText, @"alphabet\.");
    

    编辑:

    完整代码,给出预期结果:

            string entireText = @"The quick brown fox jumps over the lazy dog is an English-language pangram, alphabet! that is, a phrase that contains all of the letters of the alphabet. It has been used to test typewriters alphabet. and computer keyboards, and in other applications involving all of the letters in the English alphabet.";
            MatchCollection matches = Regex.Matches(entireText, @"alphabet\.");
            foreach (Match match in matches)
            {
                foreach (Group group in match.Groups)
                {
                    Console.WriteLine(group);
                }
            }
    

    【讨论】:

    • 您好 manojlds,此表达式未返回任何结果。如果我只输入“字母”,则有 4 个实例。 c# 有什么特定的语法吗?
    • 刚刚在 C# 中验证。给出三个字母..请验证您的代码。查看我的编辑
    • 嗨 Manjojlds.. 感谢您的代码。它有效.. 我添加了这部分:RegexOptions myRegexOptions = RegexOptions.None;正则表达式 myRegex = new Regex(strRegex, myRegexOptions);
    • 如果我想得到那个字母,如果它只以“”或“\n”开头,请问应该如何修改......
    • 使用\salphabet\之类的东西。对于正则表达式。 \s 匹配任何空白字符(空格、制表符、换行符)。
    猜你喜欢
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多