C# 通过正则表达式查找匹配的字符串

本文关键字:字符串 查找 正则表达式 | 更新日期: 2023-09-27 18:31:04

我想找出我的字符串是否包含#1,#a,#abc,#123,#abc123dsds 等文本...(带有一个或多个字符(数字和字母)的"#"字符)。

到目前为止,我的代码不起作用:

string test = "#123";
boolean matches = test.Contains("#.+");

matches变量为 false

C# 通过正则表达式查找匹配的字符串

String.Contains不接受

正则表达式。

使用Regex.IsMatch

var matches = Regex.IsMatch(test, "#.+");

test.Contains("#.+");不能"理解"正则表达式。它从字面上检查字符串test是否字面上包含#.+字符序列,而#123不包含这些字符序列。

请改用Regex.IsMatch

bool matches = Regex.IsMatch(test, "#.+");

演示。

或者没有正则表达式,你可以使用StartsWithEnumerable.Anychar.IsLetterOrDigit方法的组合,例如;

var s = "#abc123dsds+";
var matches = s.Length > 1 && s.StartsWith("#") && s.Substring(1).All(char.IsLetterOrDigit);

您需要使用正则表达式才能使用正则表达式模式。

string text = "#123";
Regex rgx = new Regex("#[a-zA-Z0-9]+");
var match = rgx.Match(text);
bool matche = match.Success)
嗯,这对我有用。 ''# 检查它是否

以 # 开头,''w 检查它是否是一个单词。

 class Program
{
    static void Main(string[] args)
    {
        string text = "#2";
        string pat = @"'#('w+)";
        Regex r = new Regex(pat);
        Match m = r.Match(text);
        Console.WriteLine(m.Success);
        Console.ReadKey();
    }
}