using System.Text.RegularExpressions;

# 锚点

  • ^:起始位置 以/^http:/为起始的字符串
  • $ : 匹配结尾位置 以/.jpg$/结尾的字符串
  • \b : 单词边界 /\bis\b/
  • 字符类
  • . :任一字符(换行除外)
  • . 除了一个\n以外的任意单个字符 如: a.b

# 元字符

  • ^、$、\b
  • \d:0-9数字
  • \D:[^\d]非数字
  • \s:空白符
  • \S:[^\s]
  • \w:[A-Za-z0-9_]组成单词字符或程序中变量字符
  • \W:[^\w]非单词字符

# 量词

  • {m,n}:m到n次
  • *: {0,}0到任意次
  • ?: {0,1}0到1次
  • +: {1,}1到任意次

# 转义符

  • \

# 多选分支

  • |或
  • 正则表达式中,量词的贪婪模式与惰性模式有什么区别?
  • 书写区别:
  • 属于贪婪模式的量词,包括: “{m,n}”、“{m,}”、“?”、“*”和“+”。
  • 在贪婪模式的量词后加上“?”,即变成非贪婪模式的量词,包括: “{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。
  • 贪婪模式——在匹配成功的前提下,尽可能多的去匹配
  • 惰性模式——在匹配成功的前提下,尽可能少的去匹配

# 简写

  • [0-9]=\d
  • \D表示不包含[0-9]
  • [a-zA-Z0-9中文下划线]=\w
  • \W表示不包含[a-zA-Z0-9中文下划线]
  • \s=不可见字符空格回车 tab 制表符
  • \S=可见字符空格回车 tab 制表符
  1. [\d \D]=[\s \S]=[\w \W] 任意单个字符
rege.ismatch(num,@“^\\d{11}”)
rege.ismatch(num,@“^\\d{11}”,regexOptions.ECMAScript)
1
2
  1. 字符串一般提取不加^$
match match=regex.match(msg,"[^@]+")
matchcollection matchs=regex.matchs(msg,"[0-9]+")
1
2
  1. 循环匹配的组的值
match match=regex.match(msg,"[0-9]+")
match.group
1
2
  1. \b \b单词边界

# 环视

  • (?<= a)左边=a
  • (?<!= a)左边=!a
  • (?!= b)右边=!b
  • (?= b)右边=b ==环视不会"占用"字符位置的,可以理解为 『它占用的位置信息,而不是位置上的字符』==
# 引用分组
  1. \1 第一组
  2. \2第二组
  3. \3第三组
  4. $1第一组

regex.replace(mag,@"(.)\1+","$1")