Regular Expression

Net程序员必然要掌握正则的核心内容:匹配提取替换常用元字符

正则表达式是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。


常用元字符

.:代表除了换行之外的任意字符,一个字符占位。

*:代表前面的子表达式出现0次或者多次。如果需要*代表的子表达式是多个字符,就将多个字符用()包含。

+:代表前面的表达式出现1次或者多次。

?:代表前面的表达式出现0次或者出现1次。

{n}:代表前面的子表达式要出现n次。

^代表开始$代表结束

{n,m}:代表前面的子表达式最少出现n次,最多出现m次。

{n,}:说明前面的子表达式最少出现n次,最多没有限制。

[]:输入的内容必须是在括号内有的一个字符。

():改变优先级、分组。

\d:代表0-9的数字。

\D:代表非数字。

\w:代表0-9a-zA-Z_中文   (经过实例证明C#里\w包含中文,JavaScript里不包含中文)

aaarticlea/png;base64,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" alt="" width="486" height="217" />

\W:代表其他特殊字符(除了0-9a-zA-Z_中文)

\s:代表看不到的字符,如:回车、空格、制表符。

\S:代表所有可见字符

项目实战:

1.运用场合:不包含某些特定的字符情况下

((?![@:]).)+:代表不是@和:的字符。

2.匹配中文

[\u4E00-\u9FFF]

 


正则表达式进行匹配的原则:

1.(有没有)只关注是否存在,而不关注它的位置,也就意味着只需要能够匹配其中一个就可以 。

2.贪婪模式:如果找到了能匹配的字符,那么他还继续往下匹配尽可能多的字符,只到最后


.net中的正则表达式

正则表达式在.net中就是用字符串来表示,这个字符串格式比较特殊,无论多么特殊,在C#语言看来都是普通的字符出,具体什么含义由Regex类内部进行语法分析。

常用的4种情况:

  1. 判断是否匹配(是否有):Regex.IsMatch("字符串","正则表达式");
  2. 字符串提取:Regex.Match("字符串","要提取的字符出的正则表达式"); ——只能提取一个(提取一次)。
  3. 字符串提取(循环提取所有):Regex.Matches(),可以提取所有匹配的字符串。
  4. 字符串替换:Regex.Replace("字符串","正则","替换内容");

提取只有一个匹配项的字符串,进行分组,提取。

string str = "tiantianjcx@qq.com";

Match match = Regex.Match(str, @"^(\w+)[@](\w+)[.](\w+)$");

if (match.Success) //匹配成功

{

Console.WriteLine(match.Groups[0].Value);  //结果:tiantianjcx@qq.com

Console.WriteLine(match.Groups[1].Value);  //结果:tiantianjcx

Console.WriteLine(match.Groups[2].Value);  //结果:qq

Console.WriteLine(match.Groups[3].Value);  //结果:com

}


JavaScript正则表达式

创建:

字面值:var regex=/元字符/;

构造函数:var regex=new RegExp("元字符");

匹配:

bool 正则表达式对象.test("字符串");

var regex = /\d*/;

alert(regex.test("122"));   //true

提取:

像数组的对象 正则表达式对象.exec("字符串");

这个对象的[0]是匹配到的结果,[1],[2]....是各个组

1.单个提取

aaarticlea/png;base64,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" alt="" width="429" height="202" />

2.单个提取并分组

var str = "我的邮箱是tiantianjcx@qq.com";

var regex = /(\w+)@(\w+[.]\w{2,3})/;

var arr= regex.exec(str);

alert(arr.length);

for (var i = 0; i < arr.length; i++) {

alert(arr[i]);

}

3.循环提取

var str = "我的邮箱是tiantianjcx@qq.com,你的是sukun@163.com号吧";

var regex = /\w+@\w+[.]\w{2,3}/g;

var arr = [];

var item = null;

while ((item = regex.exec(str)) != null) {

arr.push(item);

}

注意:创建正则表达式对象里的字符必须加上g(全局匹配),否则会陷入是循环

4.替换

javascript的正则替换,是使用String的Replace()方法将正则表达式作为参数处理。

var str = "a--b---------c---------------d---------------e---------------f";

str = str.replace(/-+/g,"-");

var str = "2016年7月26日";

str = str.replace(/(\d+)年(\d+)月(\d+)日/,"$1-$2-$3");


自测题:

     /*
192.168.10.5[port=21,type=ftp]”,这个字符串表示IP地址为192.168.10.5的服务器的21端口提供的是ftp服务,
* 其中如果“,type=ftp”部分被省略,则默认为http服务。请用程序解析此字符串,然后打印出“IP地址为***的服务器的***端口提供的服务为***”
*/ string str = "192.168.10.5[port=21,type=ftp]";
Match match = Regex.Match(str, @"^(\d{1,3}[.]?\d{1,3}[.]?\d{1,3}[.]?\d{1,3}[.]?)[[]\w+=(\w+),?\w*=?(\w*)[]]$");
if (match.Success) //匹配成功
{
Console.WriteLine("IP地址为:{0}", match.Groups[].Value);
Console.WriteLine("端口::{0}", match.Groups[].Value);
if (string.IsNullOrEmpty(match.Groups[].Value))
{
Console.WriteLine("端口提供的服务为:http");
}
else
{
Console.WriteLine("端口提供的服务为:{0}", match.Groups[].Value);
}
}
             /*
读取网站的内容,用正则表达式匹配邮箱,并提取
* 注意:做循环匹配不能加"^"和$(开始和结束),否则就只能匹配一项
*/
string path = @"E:\视频大全\传智播客.NET2014.3.26-07.09期\6--2014-4-03 文件操作和正则表达式\资料\正则表达式-素材\正则表达式\大家留下email交友吧_email_天涯社区.htm"; string txt = File.ReadAllText(path); MatchCollection arr = Regex.Matches(txt, @"[a-zA-Z0-9]+[@][a-zA-Z0-9]+[.]+[a-zA-Z]{2,3}"); using (Stream fs = new FileStream("E:\\mail.txt", FileMode.Create))
using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))
{ for (int i = ; i < arr.Count; i++)
{
Match match = arr[i];
sw.WriteLine(match.Groups[].Value); }
}

最新文章

  1. maven clean deploy -Pproduction
  2. [家里蹲大学数学杂志]第237期Euler公式的美
  3. Magento 数据库迁移
  4. vsftpd配置文件说明
  5. SQL创建链接服务器
  6. 在类库中使用log4net
  7. javascript中Math函数的属性与方法
  8. Celery 实现异步任务-one
  9. frameset,iframe框架之间如何互相调用变量、函数
  10. php RSA非对称加密 的实现
  11. Mysql 强行Kill 连接
  12. ubuntu14.04 3D桌面效果制作
  13. Django中表单的用法深探
  14. uvaoj 156Ananagrams(map和vector组合使用)
  15. HTML5文件上传前本地预览
  16. Java常用的几种线程池
  17. Leetcode 703. 数据流中的第K大元素
  18. LeetCode Add Digits (规律题)
  19. BZOJ2097: [Usaco2010 Dec]Exercise 奶牛健美操
  20. 走进矩阵树定理--「CodePlus 2017 12 月赛」白金元首与独舞

热门文章

  1. node 基础小结
  2. display和overflow
  3. SQLite3开发接口函数详解
  4. Oracle系统表整理 --sql
  5. Kettle 中生成随机数 或者GUID唯一标识符
  6. CentOS 7下使用yum安装MySQL5.7
  7. [PY3]——创建多值映射字典?/defaultdict默认字典/setdefault()
  8. [APIO2018] Circle selection 选圆圈
  9. 有标号的DAG计数 II
  10. 资料汇总--Java