首页 >后端开发 >C#.Net教程 >C# 中的正则表达式

C# 中的正则表达式

WBOY
WBOY原创
2024-09-03 15:27:15474浏览

模式匹配是在 C# 中使用正则表达式完成的,C# 的 regex 类用于在 C# 中创建正则表达式,字符串中的模式匹配和替换的标准是使用正则表达式设置的,它通过用户告诉计算机如何寻找字符串中的特定模式,当它找到它正在寻找的特定模式时必须有什么响应,regex 是正则表达式的缩写,总体而言,C# 中的正则表达式是识别和替换文本的强大方法在以特定格式定义的字符串中。

语法

以下是 C# 中正则表达式使用的基本语法列表。他们是:

1.量词

重要量词列表如下:

  • *:前面的字符匹配零次或多次。考虑正则表达式 c*。此表达式匹配 d, cd, ccd, cccd,….c 的 nd 次方。
  • +:前面的字符匹配一次或多次。考虑正则表达式 c+d。此表达式匹配 cd, ccd, cccd,….c 的 nd 次方。
  • ?: 前面的字符匹配零次或一次。考虑正则表达式 c?d。该表达式匹配 d, cd。

2.特殊字符

重要特殊字符列表如下:

  •  ^: 字符串的开头使用此特殊字符进行匹配。考虑这个例子^卡纳塔克邦。这个表达符合卡纳塔克邦是我们的州。
  •  $: 使用此特殊字符来匹配字符串的结尾。考虑卡纳塔克邦$这个例子。此表达式匹配我们的州是卡纳塔克邦。 
  • 点 (.): 使用此特殊字符,任何字符仅匹配一次。考虑示例 l.t(长度 = 3)。该表达式与 lit、lot、let 匹配。
  • d: 使用此特殊字符来匹配数字字符。考虑示例 Regex-[0-9]。该表达式匹配 123、456、254 等
  • D: 使用此特殊字符来匹配任何非数字字符。考虑示例 Regex-[^0-9]。该表达式匹配除 0-9 数字组成的数字之外的所有内容。
  • w:可以使用此特殊字符来匹配字母数字字符加“_”。考虑示例正则表达式 - A 到 Z、0 到 9、a 到 z、_(下划线)。此表达式与字母数字字符“_”匹配。
  • W:任何非单词字符都使用此特殊字符进行匹配。考虑示例 W。该表达式匹配“.”在“IR B2.8”
  • s:使用此特殊字符来匹配空白字符。考虑这个例子。该表达式与“IC B1.5”中的“C”
  • S:使用此特殊字符来匹配非空白字符。考虑 sS 的例子。该表达式匹配“IC__B1.5”中的“_”

3.字符类

可以通过将字符放在方括号之间来对它们进行分组。通过这样做,输入中的至少一个字符将与类中的任何字符匹配。

[]: 可以使用 [] 来匹配一系列字符。考虑示例 [Xyz]。该表达式匹配 x、y 和 z 中的任意一个。

考虑示例 [c-r]。该表达式匹配 c 和 r 之间的任何字符。

4.分组和替代方案

可以使用括号(和)将这些内容组合在一起。

  • (): 表达式可以使用 () 进行分组。考虑 (ab)+ 的例子。该表达式匹配 ab、abab,不匹配 aabb。
  •  {}:匹配前面的字符特定次数。可以使用以下方式指定次数:
  • n: 前一个元素恰好匹配 n 次。考虑示例“,d{3}”。此表达式匹配 1,123.40
  • 中的 123
  •  {n,m}:前一个元素至少匹配 n 次,但不超过 m 次。考虑示例“,d{2,3}”。此表达式匹配 1,123.40
  • 中的,12 和,123

C# 中正则表达式的工作

基本上,有两种类型的正则表达式引擎。它们是文本导向引擎和正则表达式导向引擎。正则表达式引导的引擎扫描正则表达式表达式,尝试将正则表达式表达式中的下一个标记与下一个字符匹配。如果找到匹配,则正则表达式前进,否则它将返回到正则表达式中的上一个位置和要解析的字符串,在其中它可以尝试通过正则表达式表达式的不同路径。文本导向引擎扫描字符串,尝试正则表达式的所有排列,然后移动到字符串中的下一个字符。文本导向引擎不会回溯或向后。即使稍后有可能找到确切的匹配项,正则表达式引擎始终返回最左边的匹配项。每当将正则表达式应用于字符串时,引擎都会从字符串的第一个字符开始。所有可能的排列都应用于第一个字符,结果似乎失败,然后排列被移动到字符串中的第二个字符,这个过程一直持续到正则表达式引擎找到完全匹配。

考虑这个例子,在去洗澡之前检查浴缸里的水。正则表达式引擎被要求从上面的句子中找到单词 Bath。正则表达式引擎将第一个字符 C 与 b 匹配,这是失败的。因此,下一个字符 H 尝试通过正则表达式引擎与 b 匹配,但这又失败了。这样继续下去,当正则表达式引擎尝试将第 24 个 字符与 b 匹配时,它会匹配。因此,它继续将单词“bath from the浴盆”与单词“bath”进行匹配,并且引擎将单词“bath from the浴盆”报告为正确的匹配项,并且不会在语句中进一步查看是否有任何其他匹配项。这就是正则表达式引擎的内部工作原理。

C#中正则表达式的方法

C# 中的正则表达式使用以下方法。他们是:

  • public bool IsMatch(string input): 使用此方法将正则表达式构造函数指定的正则表达式与指定的输入字符串进行匹配。
  • public bool IsMatch(string input, int startat): 通过该方法将正则构造函数指定的正则表达式与指定起始位置的指定输入字符串进行匹配。
  • public static bool IsMatch(string input, string pattern): 该方法将指定的正则表达式与指定的输入字符串进行匹配。
  •  public MatchCollection Matches(字符串输入):使用此方法在指定的输入字符串中搜索正则表达式的所有匹配项。
  • public string Replace(字符串输入,字符串替换): 将与正则表达式匹配的指定字符串全部替换为替换字符串,使用此方法。
  • public string[] Split(string input): 正则表达式指定的位置就是使用此方法将字符串数组拆分为子字符串数组的位置。

C# 中的正则表达式示例

C# 程序演示如何使用正则表达式验证手机号码。

代码:

using System;
using System.Text.RegularExpressions;
class Check {
static void Main(string[] args)
{
//Mobile numbers are given as a input to an array of strings
string[] nos = {"9902147368",
"9611967273", "63661820954"};
foreach(string s in nos)
{
Console.WriteLine("The mobile number {0} {1} a valid number.", s,
checkvalid(s) ? "is" : "is not");
}
Console.ReadKey();
}
// Regex expressions are verified through this code block
public static bool checkvalid(string Number)
{
string cRegex = @"(^[0-9]{10}$)|(^\+[0-9]{2}\s+[0-9]
{2}[0-9]{8}$)|(^[0-9]{3}-[0-9]{4}-[0-9]{4}$)";
Regex res = new Regex(cRegex);
if (res.IsMatch(Number))
return (true);
else
return (false);
}
}

输出:

C# 中的正则表达式

以上是C# 中的正则表达式的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn