正则表达式笔记

正则表达式相关的内容自己都不记得看了几次了,每次看完没多久便忘记了,昨日恰巧看到了一段数字转中文大写的代码,一大串表达式写在那看的我只能发呆,便又看了一遍正则相关内容,为加深印象做个笔记记录一下。下面是我所看到的代码

 
 
 
x
 
 
 
 
//输入34548567.23为例
public static string ConvertToChinese(string money) 
{
    if(!double.TryParse(money,out double x))
        return string.Empty;
     //s = LEDCKEDCJEDCIEDCHEDCG3E4D5C4F8E5D6C7.2B3A
    //     L千百拾K千百拾J千百拾I千百拾H千百拾G3千4百5拾4F8千5百6拾7.2B3A
    string s =   x.ToString("#L#E#D#C#K#E#D#C#J#E#D#C#I#E#D#C#H#E#D#C#G#E#D#C#F#E#D#C#.0B0A"); 
    //d = 3E4D5C4F8E5D6C7.2B3A
    string d = Regex.Replace(s,@"((?<=-|^)[^1-9]*)|((?'z'0)[0A-E]*((?=[1-9])|(?'-z'(?=[F-L\.]|$))))|((?'b'[F-L])(?'z'0)[0A-L]*((?=[1-9])|(?'-z'(?=[\.]|$))))", "${b}${z}");
    //r = 叁仟肆佰伍拾肆万捌仟伍佰陆拾柒元贰角叁分
    string r = Regex.Replace(d, ".", m => "负元空零壹贰叁肆伍陆柒捌玖空空空空空空空分角拾佰仟万亿兆京垓秭穰"[m.Value[0] - '-'].ToString());
    if (!string.IsNullOrWhiteSpace(d))
    r = r + (d.Reverse().Take(1).ToArray()[0] == '.' ? "整" : string.Empty);
    return r; 
}
 
 

正则里面的符号

1、^,$

$ 用于匹配字符串的结束位置

2、\,|

3、. 匹配换行符 \n之外的任何字符

4、(),[],{}

5、*,+,?

6、 {n},{n,},{n,m}

7、?:

匹配表达式但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。

这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。

例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。

摘自菜鸟教程

8、(?=表达式),(?!表达式),(?<=表达式),(?<!表达式),

特殊含义的字符

1、\f 匹配换页符,\n 匹配换行符, \r 匹配回车符, \t 匹配制表符,\v 匹配垂直制表符

2、\b 匹配一个单词边界;\B匹配非单词边界

3、\s 匹配任何空白字符,等价于 [ \f\n\r\t\v]; \S匹配任何非空白字符。

4、\d匹配一个数字字符;\D匹配非数字字符

5、\w匹配字母数字下划线,等价于'[A-Za-z0-9]';\W匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9]'。

6、\num匹配一个num,num是一个正整数,获取匹配缓存的引用。

本文只是简单总结了一下正则的一些基本知识,并没有太多具体应用示例,如有需要还请自查。

回头再看代码里的正则,嗯,还是看不懂,难搞哟。

若有大佬路过,还请指点一下 类似 (?'z'0) 的含义。

02-13 20:34