首页 > 编程语言 >C# 正则表达式

C# 正则表达式

时间:2024-08-28 13:51:02浏览次数:10  
标签:字符 Console string C# 正则表达式 表列出 using

正则表达式 是一种匹配输入文本的模式。.Net 框架提供了允许这种匹配的正则表达式引擎。模式由一个或多个字符、运算符和结构组成。

定义正则表达式

下面列出了用于定义正则表达式的各种类别的字符、运算符和结构。

字符转义
字符类
定位点
分组构造
限定符
反向引用构造
备用构造
替换
杂项构造

字符转义

正则表达式中的反斜杠字符(\)指示其后跟的字符是特殊字符,或应按原义解释该字符。

下表列出了转义字符:
在这里插入图片描述

字符类

字符类与一组字符中的任何一个字符匹配。

下表列出了字符类:
在这里插入图片描述

定位点*

定位点或原子零宽度断言会使匹配成功或失败,具体取决于字符串中的当前位置,但它们不会使引擎在字符串中前进或使用字符。

下表列出了定位点:

在这里插入图片描述

分组构造

分组构造描述了正则表达式的子表达式,通常用于捕获输入字符串的子字符串。

下表列出了分组构造:

在这里插入图片描述

实例

using System;
using System.Text.RegularExpressions;

public class Example{
   public static void Main(){
      string input = "1851 1999 1950 1905 2003";
      string pattern = @"(?<=19)\d{2}\b";

      foreach (Match match in Regex.Matches(input, pattern))
         Console.WriteLine(match.Value);
   }
}

限定符

限定符指定在输入字符串中必须存在上一个元素(可以是字符、组或字符类)的多少个实例才能出现匹配项。 限定符包括下表中列出的语言元素。

下表列出了限定符:

在这里插入图片描述

反向引用构造

反向引用允许在同一正则表达式中随后标识以前匹配的子表达式。

下表列出了反向引用构造:

在这里插入图片描述

备用构造

备用构造用于修改正则表达式以启用 either/or 匹配。

下表列出了备用构造:

在这里插入图片描述

替换

替换是替换模式中使用的正则表达式。

下表列出了用于替换的字符:

在这里插入图片描述

杂项构造

下表列出了各种杂项构造:

在这里插入图片描述

Regex 类

Regex 类用于表示一个正则表达式。

下表列出了 Regex 类中一些常用的方法:
在这里插入图片描述

实例 1
下面的实例匹配了以 ‘S’ 开头的单词:

using System;
using System.Text.RegularExpressions;

namespace RegExApplication{
   class Program{
      private static void showMatch(string text, string expr){
         Console.WriteLine("The Expression: " + expr);
         MatchCollection mc = Regex.Matches(text, expr);
         foreach (Match m in mc){
            Console.WriteLine(m);
         }
      }
      static void Main(string[] args){
         string str = "A Thousand Splendid Suns";

         Console.WriteLine("Matching words that start with 'S': ");
         showMatch(str, @"\bS\S*");
         Console.ReadKey();
      }
   }
}

当上面的代码被编译和执行时,它会产生下列结果:

Matching words that start with 'S':
The Expression: \bS\S*
Splendid
Suns

实例 2
下面的实例匹配了以 ‘m’ 开头以 ‘e’ 结尾的单词:

using System;
using System.Text.RegularExpressions;

namespace RegExApplication{
   class Program{
      private static void showMatch(string text, string expr){
         Console.WriteLine("The Expression: " + expr);
         MatchCollection mc = Regex.Matches(text, expr);
         foreach (Match m in mc){
            Console.WriteLine(m);
         }
      }
      static void Main(string[] args){
         string str = "make maze and manage to measure it";

         Console.WriteLine("Matching words start with 'm' and ends with 'e':");
         showMatch(str, @"\bm\S*e\b");
         Console.ReadKey();
      }
   }
}

当上面的代码被编译和执行时,它会产生下列结果:

Matching words start with 'm' and ends with 'e':
The Expression: \bm\S*e\b
make
maze
manage
measure

实例 3
下面的实例替换掉多余的空格:

using System;
using System.Text.RegularExpressions;

namespace RegExApplication{
   class Program{
      static void Main(string[] args){
         string input = "Hello   World   ";
         string pattern = "\\s+";
         string replacement = " ";
         Regex rgx = new Regex(pattern);
         string result = rgx.Replace(input, replacement);

         Console.WriteLine("Original String: {0}", input);
         Console.WriteLine("Replacement String: {0}", result);    
         Console.ReadKey();
      }
   }
}

当上面的代码被编译和执行时,它会产生下列结果:

Original String: Hello   World   
Replacement String: Hello World

标签:字符,Console,string,C#,正则表达式,表列出,using
From: https://blog.csdn.net/weixin_51705943/article/details/141342598

相关文章

  • linux编程——认识GCC编译器
    目录一、引言二、GCC编译器简介三、GCC的主要特点四、GCC的使用方法五、GCC的高级功能六、总结一、引言  在Linux编程的广阔世界中,GCC(GNUCompilerCollection)编译器无疑是一个至关重要的工具。对于广大的开发者来说,熟练掌握GCC编译器的使用,能够极大地......
  • HandyControl 初识 第一次正确引入
    在App.xaml配置HandyControl,一个是皮肤资源,一个是主题资源完整代码:`<Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionarySource="pack://application:,,,/HandyControl;compone......
  • 信息熵计算程序[Python+CSV格式数据集]
    0前言为了便于学习决策树信息熵相关知识,笔者编写了一个专门用于计算变量信息熵、条件熵、信息增益、信息增益比的程序,方便提升学习效率。程序中包含了计算过程的数据和详细信息以及最终计算结果。编程语言为Python,搭配CSV数据格式使用。1数据集1.1游玩数据集根据天气状......
  • 优化拓展Camstar原生弹窗提示,解决原生消息提示无效或被覆盖的场景
    1.参考代码如下 1usingCamstar.WebPortal.PortalFramework;2usingSystem;3usingSystem.Web.UI;45namespaceCamstar.WebPortal.WebPortlets.Shopfloor6{7///<summary>8///優化拓展Camstar原生消息彈窗提示,解決原生消息提示無效或被覆蓋......
  • OpenCV(cv::Point、cv::Rect、cv::Mat)
    目录1.cv::Point1.1主要属性:1.2示例:1.3用途:2.cv::Rect2.1主要属性:2.2主要方法:2.3示例:2.4用途:3.cv::Mat3.1主要属性:3.2主要方法:3.3示例:3.4用途:4.总结在OpenCV中,cv::Point、cv::Rect和cv::Mat是三个非常常用的类,分别用于表示点、矩形和图像/矩阵数据。下面是它......
  • Educational Codeforces Round 169 (Rated for Div. 2)
    A.ClosestPoint两个数时只要不相邻就有解,超过两个数无解点击查看代码#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#defineullunsignedlonglong#definepiipair<int,int>intread(){intx=0,f=0;charc=getchar();whi......
  • 四博智联ESP32-C6系列视频开发教程
    模组购买:https://item.taobao.com/item.htm?id=779505054090&开发板:https://item.taobao.com/item.htm?&id=800810222176&1.四博智联ESP32-C6系列视频开发教程---ESP32C6介绍1.四博智联ESP32-C6系列视频开发教程---ESP32C6介绍2.四博智联ESP32C6如何使用内置jtag在线......
  • 四博智联ESP32C6接入巴法云远程控制
     16.四博智联ESP32C6接入巴法云远程控制16.四博智联ESP32C6接入巴法云远程控制17.四博智联ESPC6开发板MicroPython评测和功能演示_v217.四博智联ESPC6开发板MicroPython评测和功能演示 开发板:https://item.taobao.com/item.htm?id=779505054090&模组:https://i......
  • c++算法3-广度优先搜索算法dfs
    搜索算法众所周知,搜索算法分为常见的两种深度优先搜索算法(dfs)广度优先搜索算法(bfs)深度优先搜索算法深度优先搜索算法就是一条道走到黑,如迷宫问题,重复不断地向前探索如果碰到死胡同就说明前面已经没有路了,这时候就可以想其他方向搜索,最终走到终点。回溯回溯是一种搜索算法......
  • 最全!嵌入式STM32单片机开发环境配置教学Win/Mac!!!
    嵌入式STM32单片机开发环境配置教学Win/Mac    ·本教程支持Windows和Mac    ·Windows可选的开发软件为Keil、Clion、STM32CubeMX,可自由选择开发方式    ·Mac的开发环境为(Clion+OpenOCD+STM32CubeMX),仅支持HAL库Windows配置教程        在Windows......