C#常用正则表达式回顾

项目中有些时候需要用到正则表达式,但是自己对正则表达式不熟悉,每次学习完,过一段时间(长时间)不用,就又忘了,每次需要用到的时候都需要百度下,比较麻烦,这里把C#中经常用到的正则表达式做下总结。

正则表达式常用的环境

爬虫、网站数据验证、日志分析、字符串替换、获取子字符串、文本处理、字符串处理等

正则基础

1. []方括号表示匹配可以匹配方括号中的任意点单个字符,方括号只允许匹配单个字符。
2. | 或表示两项之间的一个选择,它不能和方括号使用,只能和小括号使用。
3. ()小括号表示一个子表达式的开始和结束位置
4. ^ 否符号,如果用在方括号内,“^”表示不想要匹配的字符。
5. . 点字符:匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 \. 。
6. 定位符:定位符使您能够将正则表达式固定到行首或行尾,^ 和 $ 分别指字符串的开始与结束
7. 限定符:限定符用来指定正则表达式的一个给定组件必须要出现多少次才能满足匹配

  • * 表示匹配前面的子表达式0次或多次
  • ?表示匹配前面的子表达式0次或一次
  • + 表示匹配前面的子表达式至少匹配一次
  • {n} 表示匹配前面的子表达式n次
  • {n,m} 表示匹配前面的子表达式从n次到m次

8. 转义字符

  • \d 匹配一个数字字符。等价于 [0-9]。
  • \D 匹配一个非数字字符。等价于 [^0-9]。
  • \s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
  • \S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
  • \w 匹配字母、数字、下划线。等价于‘[A-Za-z0-9_]‘。
  • \W 匹配非字母、数字、下划线。等价于 ‘[^A-Za-z0-9_]‘。
  • \n 匹配一个换行符
  • \r 匹配一个回车符
  • \b 匹配一个单词边界,即字与空格间的位置。匹配单词的开始或者结尾部分
  • \B 匹配非单词边界 匹配单词的中间部分,例如:匹配:Chapter中的apt,/\Bapt/

9. 捕获组:除(Expression)和(?<name>Expression)语法外,其它的(?...)语法都不是捕获组。

    var str = "Is is the cost of of gasoline going up up";
    var patt1 = @"\b([a-z]+) \1\b";
    var matchDatas1 = Regex.Matches(str, patt1).Select(x => x.Value);
    Console.WriteLine(JsonConvert.SerializeObject(matchDatas1));//["of of","up up"]

捕获组的顺序是从左到右,从1开始,0代表整体,这里的\1就是分组的第一个自匹配项,在Replace中可以用$1操作

    string a = @"(020)76544567";
    string b = @"\((\d{3})\)(\d{8})";
    var c = new Regex(b);
    string d = c.Replace(a, "$0-$1-$2");
    Console.WriteLine(d);//(020)76544567-020-76544567    

10.选择
用圆括号将所有选择项括起来,相邻的选择项之间用|分割。用圆括号会有一个副作用,使相关的匹配会被缓存,缓存的数据会占用内存,降低匹配效率。此时可用?:放在第一个选项前来消除这种副作用。
可以使用非捕获元字符 ?:、?= 或 ?! 来重写捕获,忽略对相关匹配的保存。

  • (?:pattern)匹配pattern,但不捕获匹配结果。‘industr(?:y|ies)‘ 例如:匹配‘industry‘或‘industries‘。
  • (?=pattern)零宽度正向预查,不捕获匹配结果。例如,“Windows(?=95|98|NT|2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”
  • (?!pattern)正向否定预查,不捕获匹配结果。例如,“Windows(?!95|98|NT|2000)”不能匹配“Windows2000”中的“Windows”,但能匹配“Windows3.1”中的“Windows”

常用正则表达式

1. 非空字符串,适用于匹配单词,关键字等 @"\S+"

2. html标签 @"<[^>]+>"

  • 匹配带连接的a标签 @"<a[^>]*?href=([‘""]?)(?<url>[^‘""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>"
  • 匹配链接 "(href|src)\\s*=\\s*(?:\"(?<1>[^\"]*)\"|(?<1>\\S+))"
  • 匹配图片 "<img(.*?)>"

3. Email地址:@"\[email protected](\w+\.)+\w{2,3}";

4. 域名:@"[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?";

5. InternetURL:@"[a-zA-z]+://[^\s]*" 或 @"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$";

6. 手机号码:@"^([1][3,4,5,6,7,8,9])\d{9}$";

7. 国内电话号码:@"\d{3}-\d{8}|\d{4}-\d{7}";

8. 身份证:@"(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)";

9. 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在 6-10 之间):@"^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{6,10}$";

10. 简单密码:@"\w{6,10}";

11. 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):@"^[a-zA-Z][a-zA-Z0-9_]{4,15}$";

12. 钱:@"^[0-9]+(.[0-9]+)?$";

13. QQ:@"[1-9][0-9]{4,}";

13. 邮政编码:@"[1-9]\d{5}(?!\d)";

14. IP:@"^\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}$";

15. 数字: @"^\d+$";

16. 字母:@"^[a-zA-Z]+$";

原文地址:https://www.cnblogs.com/zhao123/p/11196486.html

时间: 2024-11-05 22:39:17

C#常用正则表达式回顾的相关文章

java常用正则表达式

java常用正则表达式 1.^\d+$ //匹配非负整数(正整数 + 0) 2.^[0-9]*[1-9][0-9]*$ //匹配正整数 3.^((-\d+) ?(0+))$ //匹配非正整数(负整数 + 0) 4.^-[0-9]*[1-9][0-9]*$ //匹配负整数 5.^-?\d+$ //匹配整数 6.^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数 + 0) 7.^(([0-9]+\.[0-9]*[1-9][0-9]*) ?([0-9]*[1-9][0-9]*\.[0-9]+)

160224、常用正则表达式

常用正则表达式邮箱正则表达式 用户名正则表达式 路径正则表达式 ip地址正则表达式 密码正则表达式 特定数字正则表达式........正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需.用户名:/^[a-z0-9_-]{3,16}$/密码:/^[a-z0-9_-]{6,18}$/十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/电子邮箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6}

常用正则表达式类

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace Linus.Fin.Public.StringLib { public class RegularExp { #region 常用正则表达式枚举类 public class RegExpPattern { /// <summary>

linux常用正则表达式

一 正则表达式:   正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.grep.find.awk.

常用正则表达式(网上收集的)

常用的正则表达式 常用正则表达式 正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 用户名:/^[a-z0-9_-]{3,16}$/ 密码:/^[a-z0-9_-]{6,18}$/ 十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/ 电子邮箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.

常用正则表达式公式

常用正则表达式,留着以后可能用得上,正则表达式虽然理解了一些,但是在用的时候,拿来主义相对更为迅捷一些 先粗略的看一下正则表达式基本语法,如果不关乎语法,可以直接跳过. 两个特殊的符号'^'和'$'.他们的作用是分别指出一个字符串的开始和结束.例子如下: "^The":表示所有以"The"开始的字符串("There","The cat"等): "of despair$":表示所以以"of desp

Javascript正则构造函数与正则表达字面量&amp;&amp;常用正则表达式

本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达式: 使用new RegExp()构造函数 使用正则表达字面量 先说结果,使用正则表达字面量的效率更高. 下面的示例代码演示了两种可用于创建正则表达式以匹配反斜杠的方法: 1 //正则表达字面量 2 var re = /\\/gm; 3 4 //正则构造函数 5 var reg = new RegE

常用正则表达式汇总

1.    平时做网站经常要用正则表达式,虽说可以百度,但每次都去搜搜实在是太麻烦,这里给大家汇总了常用的较完整的正则表达式, 希望能给大家带去方便和帮助:2.    "^\d+$" //非负整数(正整数 + 0)3.    "^[0-9]*[1-9][0-9]*$" //正整数4.    "^((-\d+)|(0+))$" //非正整数(负整数 + 0)5.    "^-[0-9]*[1-9][0-9]*$" //负整数6.

常用正则表达式—邮箱(Email)

常用正则表达式-邮箱(Email) ?本文针对有一点正则基础的同学,如果你对正则一无所知,请移步"正则表达式30分钟入门教程"学习. ?要验证一个字符串是否为邮箱的话,首先要了解邮箱账号的格式.我尝试过在网上找出一个标准的格式,但是很遗憾我没有找到.我也尝试使用RFC标准来判断邮箱的格式,但是也没有结果.网上些博客说不应该使用RFC标准来验证邮箱是否合法,有兴趣的可以看看"is this email valid?"和"Don't RFC-Validate