csharp正则表达式

csharp正则表达式
csharp正则表达式

学习笔记:正则表达式

2011-8-29 一.正则表达式

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

一个正则表达式就是由普通的字符及特殊字符(称为元字符符)组成的文字模式。该模式秒杀在查找文章主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

正则表达式的常用元字符(全为英文状态,注意可以代表的字符种类和个数):

元字符含义

.(点) 可以匹配除”\n”外的任意一个字符

[](中括号) 可以匹配中括号内的任意一个字符

例如,"[abc]" 匹配"plain"中的"a"

|(或符号) 可以匹配或符号两边的任意一个字符,优先级比较低

匹配x 或y。例如"z|food" 可匹配"z" 或"food"。

正则表达式的常用限定符(全为英文状态):

元字符含义

*(星号) 其限定的表达式出现次数等于或大于0次

例如,"zo*"可以匹配"z"、"zoo"

+(加号) 其限定的表达式至少出现1次

例如,"zo+"可以匹配"zoo",但不匹配"z"

?(问号) 其限定的表达式出现1次或0次

例如,"a?ve?"可以匹配"never"中的"ve"

{n} 其限定的表达式出现次数确定n次(n≥0)

{n,} 其限定的表达式至少出现n次

{n,m} 其限定的表达式出现的次数为≥n次,≤m次(m>n)

还有几个重要的符号:

符号含义

^ (Shift+6)匹配输入的开始位置

非的意思。例如[^a-z],匹配非a-z的一个字符。

$ (Shift+4)匹配输入的结尾

\将下一个字符标记为特殊字符或字面值

例如:想匹配”.”时或其他特殊字符时,需写为的”\.”

()(小括号) 1.改变优先级

2.分组,提取信息

需要熟记一些简写:

\d = [0-9]

\D=[^0-9]

\s =空字符,如\n tab space等

\S=非空字符

\w 能组成词的字符(字面、数字、中文或下划线等)

\W 非\w

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

正则表达式可以进行字符串的匹配、字符串的提取、字符串的替换。C#中分别对应正则表达式的三个重要方法。

1)IsMatch() 返回值为bool类型

格式:Regex.IsMatch("字符串", "正则表达式");

作用:判断字符串是否符合模板要求

例如:bool b =Regex.IsMatch("bbbbg","^b.*g$");判断字符串是否以b开头且以g结尾,中间可以有其他字符,若正确返回true,否则else。

2)Match() 返回值为Match类型,只能匹配一个

Matches() 返回值为MatchCollection集合类型,匹配所有符合的

格式:Match match = Regex.Match("字符串", "正则表达式");

或MatchCollection matches= Regex. Matches ("字符串", "正则表达式");

作用:①提取匹配的子字符串

②提取组。Groups的下标由1开始,0中存放match的value。

例如:

Match match = Regex.Match("age=30", @"^(.+)=(.+)$");

if (match.Success)

{

Console.WriteLine(match.Groups[1] .V alue);//输出匹配的子字符串

Console.WriteLine(match.Groups[1] .V alue);//获取第一个分组的内容

Console.WriteLine(match.Groups[2] .V alue);//获取第二个分组的内容}

----------------------------------------------------------------------------------

MatchCollection matches = Regex.Matches("2010年10月10日", @"\d+");

for (int i = 0; i < matches.Count; i++)

{

Console.WriteLine(matches[i].Value);

}

3)Replace() 返回值为string

两种常用方式如下:

//将所有的空格替换为单个空格

string str = " aa afds fds f ";

str = Regex.Replace(str, @"\s+", " ");

Console.WriteLine(str);

string str = "hello“welcome to ”beautiful “China”";

//hello"welcome to "beautiful "China"

//$1表示引用第一组。$2表示用第二组。

string strresult = Regex.Replace(str, "“(.+?)”", "\"$1\"");

Console.WriteLine(strresult);

贪婪模式与终结贪婪模式

实际应用有采集器(从某个网页上采集邮箱、图片或其他信息)、敏感词过滤、UBB翻译器。

采集邮箱:

保存图片:

网址处理:

敏感词过滤:

UBB翻译:

一些常用的正则表达式

正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番。我将一些常用的表达式收藏在这里,作备忘之用。本贴随时会更新。

匹配中文字符的正则表达式:[\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

匹配空行的正则表达式:\n[\s| ]*

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

补充:

^\d+$ //匹配非负整数(正整数+ 0)

^[0-9]*[1-9][0-9]*$ //匹配正整数

^((-\d+)|(0+))$ //匹配非正整数(负整数+ 0)

^-[0-9]*[1-9][0-9]*$ //匹配负整数

^-?\d+$ //匹配整数

^\d+(\.\d+)?$ //匹配非负浮点数(正浮点数+ 0)

^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$ //匹配正浮点数^((-\d+(\.\d+)?)|(0+(\.0+)?))$ //匹配非正浮点数(负浮点数+ 0)

^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$ //匹配负浮点数

^(-?\d+)(\.\d+)?$ //匹配浮点数

^[A-Za-z]+$ //匹配由26个英文字母组成的字符串

^[A-Z]+$ //匹配由26个英文字母的大写组成的字符串

^[a-z]+$ //匹配由26个英文字母的小写组成的字符串

^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串

^\w+$ //匹配由数字、26个英文字母或者下划线组成的字符串

^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$ //匹配email地址

^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$ //匹配url

j s正则表达式

正则 正则:一个规则,它是用来处理字符串的,验证字符串是否符合某个规则(正则匹配),或者是把字符串中符合规则的内容取出来(正则捕获) 一个正则是由元字符组成的。 创建正则有两种方式(有一些区别) var reg1=/\d/;//字面量方式,代表包含0-9之间的任意一个数字即可var reg2=new RegExp("\\d");//实例创建方式 区别在于: 1.实例创建方式需要多转译一次,把具有特殊意思,并且带\的都要多转译一次。 2.字面量方式无法识别变量,而实例创建方式可以,也就是说实例创建可以进行我们的字符串拼接(把一个变量代表的值放到正则中作为规则)。 var reg1=/\d/; var reg2=new RegExp("\\d"); varreg=/zhufeng/; console.log(reg.test("welcome zhufeng student"));//true console.log(reg.test("welcome zhufeng student"));//false var c="w100"; varreg=/^"+c+"$/;//以"开头,出现一到多次,然后是c出现一到多次,最后以"结尾,而不是我们认为的字符串拼接 varreg=new RegExp("^"+c+"$");//此时只能包含w100的 正则中还包含修饰符:i(ignoreCase忽略大小写), m(multiline 匹配换行), g(global 全局匹配) varreg=/^[a-z]$/i; varreg=new RegExp("^[a-z]$","i"); console.log(reg.test("Z")); 具有特殊意义的元字符 \d :0-9之间任意一个数字 \ :转译字符 ^ :以某一个元字符开始 $ :以某一个元字符结束 \n :一个换行符 . :匹配除了\n以为的任何字符 x|y :x或者y [xyz] :x y z 三个中一个 [^xyz] :除三个中的任一个 [a-z] :a--z之间任意一个 [^a-z] :除了a--z之间任意一个

正则表达式 Regular Expression 例子 sample VB版

VS SDK Regular Expression Language Service Example Deep Dive (VB) István Novák (DiveDeeper), Grepton Ltd. May, 2008 Introduction This example implements a small language service for demonstration purposes. This is called Regular Expression Language Service since it can tokenize text by RegEx patterns (lower case letters, capital letters, digits) and can use its own syntax coloring scheme for each token. However, the functionality of this sample is quite far away from a full language service it illustrates the basics. The source files belonging to this code have only about three hundred lines of essential code. When reading through this deep dive you are going to get familiar with the following concepts: How language services should be registered with Visual Studio? What kind of lifecycle management tasks a simple language service has? How to create a very simple language service? How to implement a scanner supporting syntax coloring? To understand concepts treated here it is assumed that you are familiar with the idea of VSPackages and you know how to build and register very simple (even non-functional) packages. To get more information about packages, please have a look at the Package Reference Sample (VisualBasic Reference.Package sample). Very basic knowledge about regular expressions is also expected. Regular Expression Language Service Open the Microsoft Visual Studio 2008 SDK Browser and select the Samples tab. In the top middle list you can search for the “VisualBasic Example.RegExLangServ” sample. Please, use the “Open this sample in Visual Studio” link at the top right panel of the browser app to prepare the sample. The application opens in Visual Studio 2008. Running the sample Rebuild the package and start it with the Experimental Hive! Without creating a new solution, add a new text file with the File|New|File... menu function. Use the File|Save As menu function to store the text file with the RegexFile.rgx name. To avoid attaching the .txt extension to the end of the file name, set the “Save as type” to “All files (*.*)” as illustrated in Figure 1:

csharp正则表达式

学习笔记:正则表达式 2011-8-29 一.正则表达式 正则表达式(Regex)是用来进行文本处理的技术,是语言无关的,在几乎所有语言中都有实现。 一个正则表达式就是由普通的字符及特殊字符(称为元字符符)组成的文字模式。该模式秒杀在查找文章主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。 正则表达式的常用元字符(全为英文状态,注意可以代表的字符种类和个数): 元字符含义 .(点) 可以匹配除”\n”外的任意一个字符 [](中括号) 可以匹配中括号内的任意一个字符 例如,"[abc]" 匹配"plain"中的"a" |(或符号) 可以匹配或符号两边的任意一个字符,优先级比较低 匹配x 或y。例如"z|food" 可匹配"z" 或"food"。 正则表达式的常用限定符(全为英文状态): 元字符含义 *(星号) 其限定的表达式出现次数等于或大于0次 例如,"zo*"可以匹配"z"、"zoo" +(加号) 其限定的表达式至少出现1次 例如,"zo+"可以匹配"zoo",但不匹配"z" ?(问号) 其限定的表达式出现1次或0次 例如,"a?ve?"可以匹配"never"中的"ve" {n} 其限定的表达式出现次数确定n次(n≥0) {n,} 其限定的表达式至少出现n次 {n,m} 其限定的表达式出现的次数为≥n次,≤m次(m>n) 还有几个重要的符号: 符号含义 ^ (Shift+6)匹配输入的开始位置 非的意思。例如[^a-z],匹配非a-z的一个字符。 $ (Shift+4)匹配输入的结尾 \将下一个字符标记为特殊字符或字面值 例如:想匹配”.”时或其他特殊字符时,需写为的”\.” ()(小括号) 1.改变优先级 2.分组,提取信息 需要熟记一些简写: \d = [0-9]

正则表达式

正则表达式 一、什么是这则表达式 正则表达式(regular expressions)是一种描述字符串集的方法,它是以字符串集中各字符串的共有特征为依据的。正则表达式可以用于搜索、编辑或者是操作文本和数据。它超出了java程序设计语言的标准语法,因此有必要去学习特定的语法来构建正则表达式。一般使用的java.util.regex API所支持的正则表达式语法。 二、测试用具 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Regex{ public static void main(String[]args)throws Exception{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); if(br==null){ System.out.println("没有输入任何数据"); System.exit(1); } while(true){ System.out.print("输入表达式:"); Pattern pattern=https://www.360docs.net/doc/027216891.html,pile(br.readLine()); System.out.print("输入字符串:"); Matcher matcher=pattern.matcher(br.readLine()); boolean found=false; while(matcher.find()){ System.out.println("找到子字符串"+matcher.group()+" 开始于索引"+matcher.start()+"结束于索引"+matcher.end()+"\n") found=true; } if(!found){ System.out.println("没有找到子字符串\n"); } } } }

JS正则表达式大全

JS正则表达式大全 JS正则表达式大全【1】 正则表达式中的特殊字符【留着以后查用】字符含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个单词的边界。 -或- 对正则表达式功能字符的还原,如"*"匹配它前面元字符0次或多次,/a*/将匹配a,aa,aaa,加了"\"后,/a\*/将只匹配"a*"。 ^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a" $ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A" * 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa + 匹配前面元字符1次或多次,/ba*/将匹配ba,baa,baaa ? 匹配前面元字符0次或1次,/ba*/将匹配b,ba (x) 匹配x保存x在名为$1...$9的变量中 x|y 匹配x或y {n} 精确匹配n次 {n,} 匹配n次以上 {n,m} 匹配n-m次 [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) [^xyz] 不匹配这个集合中的任何一个字符 [\b] 匹配一个退格符 \b 匹配一个单词的边界 \B 匹配一个单词的非边界 \cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M \d 匹配一个字数字符,/\d/ = /[0-9]/ \D 匹配一个非字数字符,/\D/ = /[^0-9]/ \n 匹配一个换行符 \r 匹配一个回车符 \s 匹配一个空白字符,包括\n,\r,\f,\t,\v等 \S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/ \t 匹配一个制表符 \v 匹配一个重直制表符 \w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配

C#利用正则表达式实现字符串搜索

C#利用正则表达式实现字符串搜索 2005-08-04 22:27 作者:张志远来源:天极网 【简介】 本文给出了在C#下利用正则表达式实现字符串搜索功能的方法,通过对.NET框架下的正则表达式的研究及实例分析,总结了正则表达式的元字符、规则、选项等。 加入收藏设为首页 -------------------------------------------------------------------------------- 3、.NET 框架的正则表达式类 下面通过介绍 .NET 框架的正则表达式类,熟悉一下.NET框架下的正则表达式的使用方法。 3.1 Regex 类表示只读正则表达式 Regex 类包含各种静态方法,允许在不显式实例化其他类的对象的情况下使用其他正则表达式类。以下代码示例创建了 Regex 类的实例并在初始化对象时定义一个简单的正则表达式。请注意,使用了附加的反斜杠作为转义字符,它将 \s 匹配字符类中的反斜杠指定为原义字符。 Regex r; // 声明一个 Regex类的变量 r = new Regex("\\s2000"); // 定义表达式 3.2 Match 类表示正则表达式匹配操作的结果 以下示例使用 Regex 类的 Match 方法返回 Match 类型的对象,以便找到输入字符串中第一个匹配。此示例使用 Match 类的 Match.Success 属性来指示是否已找到匹配。 Regex r = new Regex("abc"); // 定义一个Regex对象实例 Match m = r.Match("123abc456"); // 在字符串中匹配 if (m.Success) {

常用正则表达式

1. 平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用: 2. "^\d+$"//非负整数(正整数+ 0) 3. "^[0-9]*[1-9][0-9]*$"//正整数 4. "^((-\d+)|(0+))$"//非正整数(负整数+ 0) 5. "^-[0-9]*[1-9][0-9]*$"//负整数 6. "^-?\d+$"//整数 7. "^\d+(\.\d+)?$"//非负浮点数(正浮点数+ 0) 8. "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮点数 9. "^((-\d+(\.\d+)?)|(0+(\.0+)?))$"//非正浮点数(负浮点数+ 0) 10. "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//负浮点数 11. "^(-?\d+)(\.\d+)?$"//浮点数 12. "^[A-Za-z]+$"//由26个英文字母组成的字符串 13. "^[A-Z]+$"//由26个英文字母的大写组成的字符串 14. "^[a-z]+$"//由26个英文字母的小写组成的字符串 15. "^[A-Za-z0-9]+$"//由数字和26个英文字母组成的字符串 16. "^\w+$"//由数字、26个英文字母或者下划线组成的字符串 17. "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"//email地址 18. "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"//url 19. /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 20. /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年 21. "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil 22. /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码 23. "^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}| 1dd|2[0-4]d|25[0-5])$" //IP地址 24. 25. 匹配中文字符的正则表达式:[\u4e00-\u9fa5] 26. 匹配双字节字符(包括汉字在内):[^\x00-\xff] 27. 匹配空行的正则表达式:\n[\s| ]*\r 28. 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 29. 匹配首尾空格的正则表达式:(^\s*)|(\s*$) 30. 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 31. 匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ 32. 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 33. 匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 34. 匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$ 35. 36. 37. 元字符及其在正则表达式上下文中的行为:

正则表达式.DOC

正则表达式 第一部分: ----------------- 正则表达式(REs)通常被错误地认为是只有少数人理解的一种神秘语言。在表面上它们确实看起来杂乱无章,如果你不知道它的语法,那么它的代码在你眼里只是一堆文字垃圾而已。实际上,正则表达式是非常简单并且可以被理解。读完这篇文章后,你将会通晓正则表达式的通用语法。 支持多种平台 正则表达式最早是由数学家Stephen Kleene于1956年提出,他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用在字符的格式匹配方面上,后来被应用到熔融信息技术领域。自从那时起,正则表达式经过几个时期的发展,现在的标准已经被ISO(国际标准组织)批准和被Open Group 组织认定。 正则表达式并非一门专用语言,但它可用于在一个文件或字符里查找和替代文本的一种标准。它具有两种标准:基本的正则表达式(BRE),扩展的正则表达式(ERE)。ERE包括BRE功能和另外其它的概念。 许多程序中都使用了正则表达式,包括xsh,egrep,sed,vi以及在UNIX平台下的程序。它们可以被很多语言采纳,如HTML和XML,这些采纳通常只是整个标准的一个子集。 比你想象的还要普通 随着正则表达式移植到交叉平台的程序语言的发展,这的功能也日益完整,使用也逐渐广泛。网络上的搜索引擎使用它,e-mail程序也使用它,即使你不是一个UNIX程序员,你也可以使用规则语言来简化你的程序而缩短你的开发时间。 正则表达式101 很多正则表达式的语法看起来很相似,这是因为你以前你没有研究过它们。通配符是RE的一个结构类型,即重复操作。让我们先看一看ERE标准的最通用的基本语法类型。为了能够提供具有特定用途的范例,我将使用几个不同的程序。

正则表达式

要想真正的用好正则表达式,正确的理解元字符是最重要的事情。下表列出了所有的元字符和对它们的一个简短的描述。 字符描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,“\n”匹配字符“n”。“\\n”匹配一个换行符。序列“\\”匹配“\”而“\(”则匹配“(”。 ^ 匹配输入字符串的开始位置。如果设置了RegExp对象的Multiline属性,^也匹配“\n”或“\r”之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp对象的Multiline属性,$也匹配“\n”或“\r”之前的位置。 * 匹配前面的子表达式零次或多次。例如,zo*能匹配“z”以及“zoo”。*等价于{0,}。 + 匹配前面的子表达式一次或多次。例如,“z o+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。 ? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“d o”。?等价于{0,1}。 {n} n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。 {n,} n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“fo o o ood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。 {n,m} m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。 ? 当该字符紧跟在任何一个其他限制符(*,+,?,{n},{n,},{n,m})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串“oooo”,“o?”将匹配单个“o”,而“o+”将匹配所有“o”。 点匹配除“\n”之外的任何单个字符。要匹配包括“\n”在内的任何字符,请使用像“[\s\S]”的模式。

PHP 常用正则表达式 正则

PHP 常用正则表达式正则 平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:"^\d+$"//非负整数(正整数+ 0) "^[0-9]*[1-9][0-9]*$"//正整数 "^((-\d+)|(0+))$"//非正整数(负整数+ 0) "^-[0-9]*[1-9][0-9]*$"//负整数 "^-?\d+$"//整数 "^\d+(\.\d+)?$"//非负浮点数(正浮点数+ 0) "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"//正浮点数"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"//非正浮点数(负浮点数+ 0) "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//负浮点数 "^(-?\d+)(\.\d+)?$"//浮点数 "^[A-Za-z]+$"//由26个英文字母组成的字符串 "^[A-Z]+$"//由26个英文字母的大写组成的字符串 "^[a-z]+$"//由26个英文字母的小写组成的字符串 "^[A-Za-z0-9]+$"//由数字和26个英文字母组成的字符串 "^\w+$"//由数字、26个英文字母或者下划线组成的字符串 "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"//email地址 "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"//url /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 /^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年 "^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/ //电话号码 "^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}| 1dd|2[0-4]d|25[0-5])$" //IP地址 匹配中文字符的正则表达式:[\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 匹配空行的正则表达式:\n[\s| ]*\r 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 匹配首尾空格的正则表达式:(^\s*)|(\s*$) 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ 匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})? 匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$ 元字符及其在正则表达式上下文中的行为: \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转

Excel中使用正则表达式

Excel另类条件化格式 1 前言 我们知道,Excel的条件化格式可以根据单元个的内容来设置整个单元格的格式。如图1中的C列,当单元格的内容为“结束”时,字体颜色为绿色,为“进行中”时,颜色为黄色。但如果我们想把B列的部分特定文字(如日期2012-3-4)设置成不同的字体和颜色, Excel的条件化格式工具是不能实现的,需要另辟蹊径。 图1 2 实现过程 2.1 目标 实现B列单元格中日期字符串的字体设置成“Arial Black”字体,颜色为红色。 2.2 设计思路 Excel的VBA编程功能很强大,可以轻松实现上述目标。程序的设计思路是:找到日期字符串,然后设置字体格式。本例中利用了正则表达式来寻找日期字符串,通过Characters对象的Font属性来设置字符串的格式。 2.3 正则表达式 我们在处理文本时,经常会遇到一些满足某种规则的字符串。比如,一个无符号的整数由一连串的数字构成,本例中的日期是满足“整数-整数-整数”规则的字符串。正则表达式就是用来指定这种规则的。如果某个字符串满足正则表达式指定的规则,则称该字符串为正则表达式的一个“匹配串”。正则表达式中用\d 来匹配单个数字,用\d+来匹配连续的多个数字,这样本例中用"\d+-\d+-\d+"就可以匹配日期字符串。Excel的VBA可以通过引用vbscript中的正则标定式对象"vbscript.regexp"来使用正则表达式。 2.4 Characters函数 语法:Characters(start, length) 参数:Start是指从第几个字符处开始选择,length是要返回的字符数。 返回:Characters对象。用来控件文本中某一范围的字符串。例如,通过Characters对象的Font属性可以设置字符串的字体格式。 2.5程序代码 把FormatClick程序和“更新”按钮的Click事件关联起来,只要点击“更新”按钮就可以更新日期的字体的名称和颜色了。具体程序如下: Sub FormatClick() '声明正则表达式对象 Dim RegEx As Object '引用正则标定式对象 Set RegEx = CreateObject("vbscript.regexp")

用正则表达式实现排版助手

用正则表达式实现排版助手(GIDOT TYPESETTER)的部分排版功能 2009年08月06日星期四上午 08:42 副标题:用正则表达式实现段首缩进、修正换行、修正非段落换行、删除行尾空格、删除空行 相信使用过排版助手的人应该都觉得这是一个好软件吧?不过,我对其中的“删除非段落换行”有一个不满的地方 [https://www.360docs.net/doc/027216891.html,/gevolution90/blog/item/34cabb7fc2b8710128388ada. html]。于是才引发出这一篇文章。 *如果你还未有在windows下的正则表达式批量替换工具的话,推荐使用TextForever[https://www.360docs.net/doc/027216891.html,/stronghorse/software/index.htm#Tex tForever],很强大的文本整理工具 1.段首缩进: 可以把每行(段)的前面格式化成指定的字符串,比如2个全角空格。 正则:^[ ]*(?=[^\s]) 你可以替换成2个全角空格或4个半角空格或你自己喜欢的任何字符串。 2.修正换行: 有些文章一行紧接着一行,看起来有点不舒服,可以把每段内容段(有文字的段)之间的换行格式化成指定数量的换行比如双换行(两段之间空一行空行)。 正则:[\r\n]+ 你可以替换成2个回车。 3.修正非段落换行: 有点文章很变态的,它从文本内容中实现换行,比如: 第一段的内容,内容,内容 第一段第二行的内容内容内容。 这样的换行,这对于资料的整理有点不利,所以,这个正则就是用来修正这样的换行的,把它们合并成一行,即一个段落。 正则:^(。{25,}[^……“”!!::??])\r\n 替换成:$1 把你认为不是段落结束的标点加入到那个中括号中,大括号中的“25”为作

正则表达式语法完整版

正则表达式基础知识 一个正则表达式就是由普通字符(例如字符a 到z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。如:

下面看几个例子: "^The":表示所有以"The"开始的字符串("There","The cat"等); "of despair$":表示所以以"of despair"结尾的字符串; "^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了;"notice":表示任何包含"notice"的字符串。 '*','+'和'?'这三个符号,表示一个或一序列字符重复出现的次数。它们分别表示“没有或更多”,“一次或更多”还有“没有或一次”。下面是几个例子: "ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多; "ab?":表示一个字符串有一个a后面跟着零个或者一个b; "a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。 也可以使用范围,用大括号括起,用以表示重复次数的范围。 "ab{2}":表示一个字符串有一个a跟着2个b("abb"); "ab{2,}":表示一个字符串有一个a跟着至少2个b; "ab{3,5}":表示一个字符串有一个a跟着3到5个b。

请注意,你必须指定范围的下限(如:"{0,2}"而不是"{,2}")。 还有,你可能注意到了,'*','+'和'?'相当于"{0,}","{1,}"和"{0,1}"。 还有一个'|',表示“或”操作: "hi|hello":表示一个字符串里有"hi"或者"hello"; "(b|cd)ef":表示"bef"或"cdef"; "(a|b)*c":表示一串"a""b"混合的字符串后面跟一个"c"; '.'可以替代任何字符: "a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字; "^.{3}$":表示有任意三个字符的字符串(长度为3个字符); 方括号表示某些字符允许在一个字符串中的某一特定位置出现: "[ab]":表示一个字符串有一个"a"或"b"(相当于"a|b"); "[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a|b|c|d"或者"[abcd]");"^[a-zA-Z]":表示一个以字母开头的字符串; "[0-9]%":表示一个百分号前有一位的数字; "[0-9]+":表示一个以上的数字; ",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。 你也可以在方括号里用'^'表示不希望出现的字符,'^'应在方括号里的第一位。(如:"%[^a-zA-Z]%"表 示两个百分号中不应该出现字母)。 为了逐字表达,必须在"^.$()|*+?{\"这些字符前加上转移字符'\'。 请注意在方括号中,不需要转义字符。

正则表达式在垂直搜索引擎中的应用

作者简介:张斌(1977-),硕士,讲师,研究方向:电子商务专业方向。 收稿日期:2010-05-06 正则表达式在垂直搜索引擎中的应用 张斌 (浙江越秀外国语学院,绍兴312000) 摘要:采用聚焦爬虫可以提高搜索引擎的检索效率,聚焦爬虫经常使用正则表达式来进行有效的信息检索,着重分析了网页检索中常用的正则表达式,为搜索引擎的构建提供帮助。关键词:正则表达式;聚焦爬虫;信息检索中图分类号:TP3 文献标识码:B 文章编码:1672-6251(2010)08-0162-02 Application of Regular Expressions in Vertical Search Engine ZHANG Bin (Zhejiang Yuexiu Foreign Language College,Shaoxing 312000) Abstract:Because focused crawler system can promote the efficiency of search engine and regular expression could used to get quick and efficient search.In this paper,regular expression used in web page index was analyzed for providing useful help for researcher in vertical search engine. Key words:regular expressions;focuses crawler;information retrieval 页面内容提取、分词、自然语言处理是聚焦爬虫的主要工作。在内容提取中采用正则表达可以明显提高效能,已在许多搜索程序中广泛应用。以下列举几个常用的正则表达,并分析其在聚焦爬虫中的应用方法,以供同行参考。 1正则表达式与文档内容提取 正则表达式是一种编程语言中使用的特殊代码模 式,可用其验证、查找、替换与划分文本内容。聚焦爬虫往往通过对主题网页的学习提取主题特征的正则表达式,以指导爬虫过滤与主题不相符的网页文本[4]。正则表达式基本技巧如下: (1)匹配多个字符之一。如匹配拼写错误的fac - tory ,可用:f [ae]ct [ou]ry ; (2)匹配文本行开始与结束。如以c 开始,a 结束,可用:^a.*b$; (3)匹配单词。如找dog ,可用:\bdog\b ; (4)Unicode 字母。如匹配中文,可用:[\u3400- \u4DB5\u4E00-\u9fa5]; (5)分组和捕获。如匹配年月日相同的日期,可用:\b\d\d (\d\d)-\1-\1\b ,其中1表示捕获分组1,即 (\d\d)中的内容,捕获分组可以表示临时存取的区域, 用于引用和替换; (6)重复匹配。完整HTML 文件可用: .*?.*?.*?.*.*?]*>.*>.*?. 其中:*表示一个或多个,?表示0个或一个,^表示否定。 Html 文件也可使用NekoHTML 做标签补偿,用HtmlParser 等解析程序将网页转换成一个个串联的Node ,用正则式过滤脚本、注释等标签,提取表格等结构化信息,实现网页去噪。其中包括为网页建立网站风格树和计算节点重要性来确定噪声元素。 2正则表达式编程 使用C#、Java 等编程语言的步骤如下:①要先要 导入函数库,其中C#用using System.Text.RegularEx - pressions ;Java 用import java.util.regex.*;②创建正则表达式对象,C#用Regex regexObj =new Regex (" regex pattern");Java 用Pattern regex=https://www.360docs.net/doc/027216891.html,pile ("regex pattern");Matcher regexMatcher =regex.matcher (subjectString);③在网页信息提取中,拆分字符串、逐行查找为常用功能,C#代码如下:string []spli - tArray=Regex.Split (subjectString,"<[^<>]*>>"),其中

正则表达式

第一章正则表达式概述 正则表达式(Regular Expression)起源于人类神经系统的研究。正则表达式的定义有以下几种: ●用某种模式去匹配一类字符串的公式,它主要是用来描述字符串匹配的工具。 ●描述了一种字符串匹配的模式。可以用来检查字符串是否含有某种子串、将匹配的子 串做替换或者从中取出符合某个条件的子串等。 ●由普通字符(a-z)以及特殊字符(元字符)组成的文字模式,正则表达式作为一个模版, 将某个字符模式与所搜索的字符串进行匹配。 ●用于描述某些规则的的工具。这些规则经常用于处理字符串中的查找或替换字符串。 也就是说正则表达式就是记录文本规则的代码。 ●用一个字符串来描述一个特征,然后去验证另一个字符串是否符合这个特征。 以上这些定义其实也就是正则表达式的作用。 第二章正则表达式基础理论 这些理论将为编写正则表达式提供法则和规范,正则表达式主要包括以下基础理论: ●元字符 ●字符串 ●字符转义 ●反义 ●限定符 ●替换 ●分组 ●反向引用 ●零宽度断言 ●匹配选项 ●注释 ●优先级顺序 ●递归匹配 2.1 元字符 在正则表达式中,元字符(Metacharacter)是一类非常特殊的字符,它能够匹配一个位置或字符集合中的一个字符,如:、 \w等。根据功能,元字符可以分为两种类型:匹配位置的元字符和匹配字符的元字符。 2.1.1 匹配位置的元字符

包括:^、$、和\b。其中^(脱字符号)和$(美元符号)都匹配一个位置,分别匹配行的开始和结尾。比如,^string匹配以string开头的行,string$匹配以string结尾的行。^string$匹配以string开始和结尾的行。单个$匹配一个空行。单个^匹配任意行。\b匹配单词的开始和结尾,如:\bstr匹配以str开始的单词,但\b不匹配空格、标点符号或换行符号,所以,\bstr可以匹配string、string fomat等单词。\bstr正则表达式匹配的字符串必须以str开头,并且str以前是单词的分界处,但此正则表达式不能限定str之后的字符串形式。以下正则表达式匹配以ing结尾的字符串,如string、This is a string等 Ing\b 正则表达式ing\b匹配的字符串必须以ing结尾,并且ing后是分界符,以下正则表达式匹 配一个完整的单词:\bstring\b。 2.1.2匹配字符的元字符 匹配字符的元字符有7个:.(点号)、\w、\W、、s\、\S、\d和\D。其中点号匹配除换行之外的任意字符;\w匹配单词字符(包括字母、汉字、下划线和数字);\W匹配任意非单词字符、\s匹配任意的空白字符,如空格、制表符、换行等;\S匹配任意的非空白字符;\d匹配任意数字字符;\D匹配任意的非数字字符。如: ^.$匹配一个非空行,在该行中可以包含除了换行符以外的任意字符。 ^\w$匹配一个非空行,并且该行中只能包含字母、数字、下划线和汉字中的任意字符。 \ba\w\w\w\w\w\w\\b匹配以字母a开头长度等于7的任意单词 \ba\w\w\w\d\d\d\D\b匹配以字母a开头后面有3个字符三个数字和1个非数字字符长度等于8的单词 2.2字符类 字符类是一个字符集合,如果该字符集合中的任何一个字符被匹配,则它会找到该匹配项。字符类可以在[](方括号)中定义。如:

C#中常用正则表达式总结

C# 中的常用正则表达式总结
这是我发了不少时间整理的 C#的正则表达式,新手朋友注意一定要手册一下哦,这样可以节省很多 写代码的时间,中国自学编程网为新手朋友整理发布。 只能输入数字:"^[0-9]*$"。 只能输入 n 位的数字:"^\d{n}$"。 只能输入至少 n 位的数字:"^\d{n,}$"。 只能输入 m~n 位的数字:。"^\d{m,n}$" 只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。 只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。 只能输入有 1~3 位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。 只能输入非零的正整数:"^\+?[1-9][0-9]*$"。 只能输入非零的负整数:"^\-[1-9][]0-9"*$。 只能输入长度为 3 的字符:"^.{3}$"。 只能输入由 26 个英文字母组成的字符串:"^[A-Za-z]+$"。 只能输入由 26 个大写英文字母组成的字符串:"^[A-Z]+$"。 只能输入由 26 个小写英文字母组成的字符串:"^[a-z]+$"。 只能输入由数字和 26 个英文字母组成的字符串:"^[A-Za-z0-9]+$"。 只能输入由数字、26 个英文字母或者下划线组成的字符串:"^\w+$"。 验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在 6~18 之间,只能包含 字符、数字和下划线。 验证是否含有^%&’,;=?$\"等字符:"[^%&’,;=?$\x22]+"。

只能输入汉字:"^[\u4e00-\u9fa5]{0,}$" 验证 Email 地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。 验证 InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。 验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为:"XXX-XXXXXXX"、"XXXXXXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。 验证身份证号(15 位或 18 位数字):"^\d{15}|\d{18}$"。 验证一年的 12 个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。 验证一个月的 31 天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~ "31"。 利用正则表达式限制网页表单里的文本框输入内容: 利用正则表达式限制网页表单里的文本框输入内容: 制网页表单里的文本框输入内容 用正则表达式限制只能输入中文: onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,’’)" onbeforepaste="cliPBoardData.setData(’text’,clipboardData.getData(’text’).replace(/ [^\u4E00-\u9FA5]/g,’’))" 用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,’’)" onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/ [^\uFF00-\uFFFF]/g,’’))" 用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,’’) "onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace( /[^\d]/g,’’))" 用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,’’) "onbeforepaste="clipboardData.setData(’text’,clipboardData.getData(’text’).replace( /[^\d]/g,’’))" 得用正则表达式从 URL 地址中提取文件名的 JavaScript 程序,如下结果为 page1

相关文档
最新文档