加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则,字符串学习

发布时间:2020-12-14 02:19:34 所属栏目:百科 来源:网络整理
导读:1.正则表达式是一种模式匹配工具,用于判定其它元素是否符合它 2.Regex类包含若干静态方法,用正则表达式进行字符串匹配。 常用方法:Match 使用方法:public static Match Match(string input,string pattern),pattern表示一个正则表达式 引用using System.T
1.正则表达式是一种模式匹配工具,用于判定其它元素是否符合它 2.Regex类包含若干静态方法,用正则表达式进行字符串匹配。 常用方法:Match 使用方法:public static Match Match(string input,string pattern),pattern表示一个正则表达式 引用using System.Text.RegularExpressions string input="zhangsan@gmail.com"; string patten=@"[a-zA-Z]+@[a-zA-Z]+.com$"; //正则表达式 Regex r=new Regex(patten); Match m=r.Match(input) if(m.success)console.writeline(m.value) else{console.writeline("错误");} 3.字 符 描 述 转义字符,将一个具有特殊功能的字符转义为一个普通字符,或反过来 ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 * 匹配前面的零次或多次的子表达式 + 匹 字  符 描  述 转义字符,将一个具有特殊功能的字符转义为一个普通字符,或反过来 ^ 匹配输入字符串的开始位置 $ 匹配输入字符串的结束位置 * 匹配前面的零次或多次的子表达式 + 匹配前面的一次或多次的子表达式 ? 匹配前面的零次或一次的子表达式 {n} n是一个非负整数,匹配前面的n次子表达式 {n,} n是一个非负整数,至少匹配前面的n次子表达式 {n,m} m和n均为非负整数,其中n<=m,最少匹配n次且最多匹配m次 ? 当该字符紧跟在其他限制符(*,+,?,{n},{n,},{n,m})后面时, 匹配模式尽可能少的匹配所搜索的字符串 . 匹配除“n”之外的任何单个字符 (pattern) 匹配pattern并获取这一匹配 (?:pattern) 匹配pattern但不获取匹配结果 (?=pattern) 正向预查,在任何匹配pattern的字符串开始处匹配查找字符串 (?!pattern) 负向预查,在任何不匹配pattern的字符串开始处匹配查找字符串 x|y 匹配x或y。例如,‘z|food’能匹配“z”或“food”。‘(z|f)ood’则匹配“zood”或“food” [xyz] 字符集合。匹配所包含的任意一个字符。例如,‘[abc]’可以匹配“plain”中的‘a’ [^xyz] 负值字符集合。匹配未包含的任意字符。例如,‘[^abc]’可以匹配“plain”中的‘p’ [a-z] 匹配指定范围内的任意字符。例如,‘[a-z]’可以匹配'a'到'z'范围内的任意小写字母字符 [^a-z] 匹配不在指定范围内的任意字符。例如,‘[^a-z]’可以匹配不在‘a’~‘z’'内的任意字符 b 匹配一个单词边界,指单词和空格间的位置 B 匹配非单词边界 d 匹配一个数字字符,等价于[0-9] D 匹配一个非数字字符,等价于[^0-9] f 匹配一个换页符 n 匹配一个换行符 r 匹配一个回车符 s 匹配任何空白字符,包括空格、制表符、换页符等 S 匹配任何非空白字符 t 匹配一个制表符 v 匹配一个垂直制表符。等价于x0b和cK w 匹配包括下划线的任何单词字符。等价于‘'[A-Za-z0-9_]’ W 匹配任何非单词字符。等价于‘[^A-Za-z0-9_]’   下面给出一些常用的正则表达式,这些都利用了上表构造正则表达式的技术。   (1)“^The”:匹配所有以“The”开始的字符串,如“There”、“Thecat”等。   (2)“he$”:匹配所有以“he”结尾的字符串,如“he”、“she”等。   (3)“ab*”:匹配有一个a后面跟着零个或若干个b的字符串,如“a”、“ab”、“abbb”,……。   (4)“ab+”:匹配有一个a后面跟着至少一个或者更多个b的字符串,如“ab”、“abbb”……。   (5)“ab?”:匹配有一个a后面跟着零个或者一个b的字符串,包括“a”、“ab”。   (6)“a?b+$”:匹配在字符串的末尾有零个或一个a跟着一个或几个b的字符串。   (7)“ab{2}”:匹配有一个a跟着两个b的字符串,即“abb”。   (8)“ab{2,}”:匹配有一个a跟着至少两个b的字符串,如“abb” 、“abbb”。   (9)“ab{3,5}”:匹配有一个a跟着3到5个b的字符串,如“abbb” 、“abbbb”。   (10)“hi|hello”:匹配包含“hi”或者“hello”的字符串。   (11)“(b|cd)ef”:表示“bef”或“cdef”。   (12)“a.[0-9]”:匹配有一个“a”后面跟着一个任意字符和一个数字的字符串。   (13)“^.{3}$”:匹配有任意三个字符的字符串。   (14)“[ab]”:表示一个字符串有一个“a”或“b”,相当于“a?b”。   (15)“[a-d]”:表示一个字符串包含小写的'a'到'd'中的一个,相当于“a?b?c?d”或者“[abcd]”。   (16)“^[a-zA-Z]”:表示一个以字母开头的字符串。   (17)“[0-9]%”:表示一个百分号前有一位数字。   (18)“,[a-zA-Z0-9]$”:表示一个字符串以一个逗号后面跟着一个字母或数字结束 4.验证URL是否合法 string patten=@"^http://(www.){0,1}.+.(com|net|cn)$"; ^http:// 表示已http://开头 (www.)? 表示随后应该包含0-1个www .+表示任意字符串 . 表示一个. (com|net|cn)$ 以com,net,org结尾 5.匹配正则示例: using System.Text.RegularExpression; class program { static void Main(string[] args) { string strUrl="http://www.php.net"; string patten=@"^http://(www.)(0,1).+.(com|net|cn)$"; Regex r=new Regex(patten); Match m=r.Match(strUrl); if(m.success) { console.WriteLine("次网址的格式正确"); } else{ console.writeline("此网址格式有误"); } } } 验证输入是否为非负数patten=@"^d+$"; 验证输入是否为正整数patten=@"^[0-9]*[1-9][0-9]*$"; 验证输入的是否为26个英文字母组成的字符串 patten=@"^[A-Za-z]+$"; 验证输入是否是合法的Email地址patten=@"w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$"; 验证合法的身份证号码 patten=@"^d{15}|d{18}$"; 验证输入的电话号码格式patten=@"^((d{3,4}-)|d{3.4}-)?d(7,8)$"; 验证只能输入汉字 patten=@"^[ue00-u9fa5]{0,}$"; 使用正则表达式去除Html标记和空格 6.字符串 compare()方法,比较两个字符串对象 ,6种重载 int compare(string strA,string strB) int compare(string strA,string strB,bool ignorCase); int compare(string strA,string strB,bool ignorCase,cultureinfo) int compare(string strA,int indexA,int indexB,int length,bool ignorCase) int compare(string strA,int index,System.Globalization.CultureInfo culture) strA和strB:待比较字符串 ignorCase:指定考虑是否大小写,取true false indexA,indexB,当比较两个字串的时候,字串的起始位置 length:待比较字符串最大长度 culture:字符串的区域性信息 compare()返回值表:A小于B 返回负数,0,正整数 compareTo()方法,将当前字符串对象与另一个字符串对象作比较 compareTo()不是静态方法,没有重载形式,只能按照大小写敏感方式比较两个串 strA.CompareTo(StrB); Equals()方法 public bool Equals(string) 用法:strA.Equals(strB) public static bool Equals(string,string) 用法:比较两个字符串的值 比较运算符:也可以用==,!=比较两个字符串 格式化字符串 Format() public static string Format(string format,params object[] args) 用后面的参数替代前面的{0,1,2}等 string.Format("当前日期为:{0:yyyy-MM-dd}",system.datetime.now); 0:后面表示输出格式 连接字符串: concat()和join() concat()方法用于连接两个或者多个字符串 newstr=string.concat(strA," ",strB); 输出A B join方法 string[] arr={strA,strB}; string.join("^^",arr);那么arr数组中的每个元素之间都用^^连接 连接字符串“+” strA+" "+strB 分割字符串 split()字符串分割 newstr="Hello^^world" char separator={'^'}; string[] splitstring=new string[100]; splitstring=newstr.split(separator); int i=0; while(i<splitstrings.Length) {console.writeline("字符串{0}:{1}",i,splitstring[i]); i++;} 插入字符串 insert()方法,并且使用PadLeft/PadRight可以在一个字符串的左右两侧进行字符填充 public string Insert(int startindex,string value) strA.insert(1,strB);从1位置插入字符串B strA.PadLeft(20,'*')左侧填充字符,如果只有一个参数,那默认的就是空格 删除字符串 Remove()方法可以在任意位置删除任意长度 也可以使用Trim/Trimend/TrimStart() Remove从指定字符串开始,删除指定数量字符 public string Remove(int startindex,int count) strA.Remove(1,3)从第一个位置删除3个字符 Trim/TrimStart/TrimEnd方法 去掉字符串首尾字符的空格用strA.Trim(); public string Trim(params char[] trimChars) 去掉字符串中存在于数组中的字符 遍历字符串 StartWith/EndsWith()判定字符串对象是否以另一个子字符串开头,返回true,false StrA.StartsWith("eh") indexof/lastindexof用于搜索一个字符串中,某个特定字符或者字符串第一次出现的位置,区分大小写,首字母以0计数 重载 int indexof(char value) int indexof(char value,int startindex) int indexof(char value,int startindex,int count) lastindexof用于搜索一个字符串中,某个特定子串或字串最后一次出现的位置 indexofAny/lastindexofAny 与indexof类型,但是indexof查出第一个出现的位置,indexofany查出所有位置 复制字符串 copy()和copyTo(),可以完成对一个字符串及其一部分的复制操作 public static string copy(string str); 例如string newStr=string.copy(StrA); copyTo实现copy的功能,但是更丰富,可以复制源字符串中的一部分到一个字符数组中。 public void CopyTo(int sourceIndex,char[] destination,int detination,int count) soureindex 需要复制字符起始位置,char[] 目标字符串数组,destination制定目标数组中的开始存放位置;count指定要复制的字符个数 大小写转换 ToUpper()和ToLower() 7.stringBuilder类 动态字符串,是指可以修改字符串时,系统不需要创建新的对象。 属性 capacity chars length maxcapacity 方法 Append,AppendFormat,Equals,Insert,Remove,Replace 追加字符串 Append()方法 public stringBuilder Append(object value) sb2.Append(" World") AppendFormat()一样的用法 sb5.AppendFormat("{0:yyyy-mm-dd}",Time) 插入字符串 public stringBuilder insert(int index,object value) 要插入字符串的位置与内容 Remove(int startindex,int length)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读