繁体   English   中英

正则表达式匹配特定字符?

[英]Regex to match a specific character?

我需要制作一个正则表达式,使其单独使用时匹配字符“ N”。 到目前为止,我想出了一个表达式: "^[N]$"在本示例中似乎可以使用。 它与其他三个不匹配,只是“ N”不匹配。

public static void Main()
{
    string[] words = new string[] { "42ND", "N", "WATERING", "ANONYMOUS"};

    string pattern = @"^[N]$";

    foreach (string word in words)
    {
        if( Regex.IsMatch(word, pattern))
        {
            Console.WriteLine(word + " Is a match"); 
        }
    }
} 

任何人都可以找出与此相关的任何问题或提供更好的解决方案吗? 谢谢!

编辑一点点清晰度:我只是想匹配字母"N" ,仅此而已。 它不应该与“ NN”,“ NNN”或任何变体匹配,并且不应该与包含字母"N"任何单词匹配。

您可以使用\\b (单词边界匹配)来选择字符串中的所有“单N”个单词(不确定这是否是您真正需要的,但是示例中的字符串数组表明这可能是案子)。

using System;
using System.Diagnostics;
using System.Text.RegularExpressions;

namespace ConsoleApplication1 {
    internal class Program {
        private static void Main(string[] args) {
            var pattern = new Regex(@"\bN\b");
            const string input = "N foo N bar N";
            MatchCollection matches = pattern.Matches(input);
            Debug.Assert(matches.Count == 3);
            foreach (Match m in matches) {
                Console.WriteLine(m.Value);
            }
        }
    }
}

当只有一个字符^N$表示与^[N]$同时,实际上就不需要字符类( [] )。

您的正则表达式匹配的是一个由单个字符N组成的字符串。

^匹配字符串的开头, $匹配字符串的结尾,中间唯一的有效字符是N ,因此它将匹配字符串N


更新:

如果您所寻找的只是一个由N组成的字符串,那么您根本不需要正则表达式,就像其他人建议的那样,请使用if (word == "N")或如果您想获取由N组成的任何单词较大的字符串,则可以使用\\bN\\b

如果您只是想查找与字符串"N"的完全匹配,则无需使用正则表达式!

if ( word == "N" ) ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM