c# 正则指引--字符组

字符组:在同一个位子可能出现的各种字符。

用正则表达式判断数字字符:

re.Search("[0123456789]",charStr) != None

其中[0123456789]以字符串形式给出正则表达式,他是一个字符组,表示可以是0到9的任意一个字符。
Net中Regex.IsMatch(charStr,"[0123456789]");
在默认情况下,Search(Pattern,String)只会判断某个子串能否匹配pattern,只要pattern能匹配String中的一部分,也认为是匹配成功,为了测整个String是否能匹配pattern,要在pattern两端加上^和$.他们表示定位字符串的起始和结束位置,这样就能保证,只有是整个String都可以由pattern匹配,才算成功。
像[0123456789]这个字符组,还可以使用范围表示法:[0-9]

在字符组中:“-”表示范围,一般根据字符对应的一个码值,码值小的在“-”前面,大的在后面。
上面的例子中,“-”用来表示范围,并不能匹配横线字符,这一类字符叫做元字符,像[、]、^、$都是元字符。

那么当我们需要匹配这些特殊的元字符的时候,需要进行转义处理。
像“-”字符,如果是紧挨着“[”,会认为是普通字符,其他的情况都是元字符,可以使用“\”,对元字符进行转义:
re.Search("^[0\\-9]$","3") != None //false
上面的“\”字符本身会联合其他的例如“\n \r”等来使用,单独使用也需要“\\”来进行转义。
使用原生字符串: re.Search(r"^[0\-9]$","3") != None ,在字符串前面加上r。就可以不用“\\”来表示"\"了。
排除型字符组:[^...]:表示当前位置,匹配一个没有列出的字符。
[^0-9]:表示匹配一个不是数字的字符
字符组简记法:
常见的有:
\d:[0-9]
\w:[0-9a-zA-Z] 这个还包括一个下划线
\s:[ \t\r\n\v\f]

对应的排除型字符组简记法:
\D :与\d互补
\W :与\w互补
\S :与\s互补
最简单的应用:[\s\S]组合使用,匹配所有的字符。

(0)

相关推荐

  • c# 正则指引--字符组

    字符组:在同一个位子可能出现的各种字符. 用正则表达式判断数字字符: re.Search("[0123456789]",charStr) != None 其中[0123456789]以字符串形式给出正则表达式,他是一个字符组,表示可以是0到9的任意一个字符. Net中Regex.IsMatch(charStr,"[0123456789]"); 在默认情况下,Search(Pattern,String)只会判断某个子串能否匹配pattern,只要pattern能匹配S

  • Java正则多字符串匹配替换

    Java中使用也比较简单:1. 编译正则表达式的字面值得到对应的模式Pattern对象: 2. 创建匹配给定输入与此模式的匹配器Matcher: 3. 通过匹配器对象执行操作,匹配器对象的方法很丰富,方法之间组合使用更加强大. 复制代码 代码如下: public static void main(String[] args) {     //被替换关键字的的数据源     Map<String,String> tokens = new HashMap<String,String>(

  • 正则基础之 神奇的转义

    1 概述这或许会是一个让人迷惑,甚至感到混乱的话题,但也正因为如此,才有了讨论的必要.在正则中,一些具有特殊意义的字符,或是字符序列,被称作元字符,如"?"表示被修饰的子表达式匹配0次或1次,"(?i)"表示忽略大小写的匹配模式等等.而当这些元字符被要求匹配其本身时,就要进行转义处理了.不同的语言或应用场景下,正则定义方式.元字符出现的位置不同,转义的方式也是林林总总,不一而同.2 .NET正则中的字符转义2.1     .NET正则中的转义符绝大多数语言中,&qu

  • PHP preg_replace() 正则替换所有符合条件的字符串

    需要我们用程序处理的数据并不总是预先以数据库思维设计的,或者说是无法用数据库的结构去存储的. 比如模版引擎解析模版.垃圾敏感信息过滤等等. 一般这种情况,我们用正则按我们的规则去匹配preg_match.替换preg_replace. 但一般的应用中,无非是些数据库CRUD,正则摆弄的机会很少. 根据前面说的,两种场景:统计分析,用匹配:处理用替换. PHP preg_replace() 正则替换,与Javascript 正则替换不同,PHP preg_replace() 默认就是替换所有符号匹

  • 总结JavaScript的正则与其他语言的不同之处

    前言 最近发现JavaScript中的正则在某些地方的表现和其他语言或工具中的正则有些不同,比较另类.虽然你几乎不可能写出也几乎用不到下面我讲的这些正则,但是了解一下毕竟是好的. 本文中的代码示例都是在兼容ES5的JavaScript环境中执行的,也就是说,IE9之前版本,Fx4左右的版本,等,中的表现很有可能和我下面讲的不一样. 1.空字符类 不包含任何字符的字符类[]称之为空字符类(empty char class),我相信你没听别人这么叫过,因为在其他语言中,这种写法是非法的,所有的文档和

  • PHP中正则表达式对UNICODE字符码的匹配方法

    网友ainiaa的问题是 PHP代码如下 复制代码 代码如下: $words = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSRUVWXYZ!@#$%^&*()_+-=[]\\,./{}|<>?'\"你好啊我们"; $otherStr=preg_replace("/[chr(128)-chr(256)]+/is"," ",$words); echo

  • 正则基础之 \b 单词边界

    1概述 "\b"匹配单词边界,不匹配任何字符. "\b"匹配的只是一个位置,这个位置的一侧是构成单词的字符,另一侧为非单词字符.字符串的开始或结束位置."\b"是零宽度的. 基本上所有的资料里都会说"\b"是单词边界,但是关于"单词"的范围却是少有提及.通常情况下,正则表达式中所谓的"单词",就是由"\w"所定义的字符所组成的子串. "\b"表示所

  • 乱象,印迹 正则学习问答

    最近有幸在开源中国和51CTO两家网站作为嘉宾参与了于正则表达式的专题问答.在问答过程中,我收集到学习正则表达式过程中的某些普遍问题,在这里专门花一点篇幅来回答 正则表达式是难学的,这不存在疑义.但是我认为,难点也只在语法方面.正则表达式已经有年头了,它(的语法)诞生于上世纪七十年代.那是个怎样的情景?举个简单的例子吧,Unix下的usr.dev等名字,就是那时留传下来的,现在已经有很多人诟病了,usr不是user,dev不是device,难学,也难记.经过这些年的飞速发展,当年的很多问题已经被

  • 正则表达式学习参考 正则入门学习资料

    1 概述 正则表达式(Regular Expression)是一种匹配模式,描述的是一串文本的特征. 正如自然语言中"高大"."坚固"等词语抽象出来描述事物特征一样,正则表达式就是字符的高度抽象,用来描述字符串的特征. 正则表达式(以下简称正则,Regex)通常不独立存在,各种编程语言和工具作为宿主语言提供对正则的支持,并根据自身语言的特点,进行一定的剪裁或扩展. 正则入门很容易,有限的语法规则很容易掌握,但是目前正则的普及率并不高,主要是因为正则的流派众多,各种宿

  • PHP 正则判断中文UTF-8或GBK的思路及具体实现

    UTF-8匹配: 在javascript中,要判断字符串是中文是很简单的.比如: 复制代码 代码如下: var str = "php编程"; if (/^[\u4e00-\u9fa5]+$/.test(str)) { alert("该字符串全部是中文"); }else{ alert("该字符串不全部是中文"); } //php中,是用\x表示十六进制数据的.于是,变换成如下的代码: $str = "php编程"; if (pr

随机推荐