正则表达式(C#和Lua)

一. C#版本

  1. "\b" 代表要匹配的单词的第一个字符和最后一个字符,简称元字符
  2. "." 代表除了换行符号之外的任意字符
  3. "\d" 代表一位数字(等价于[0-9]):"\d\d" 等价于 \d{2}
  4. "\s" 匹配任意的空白符,包括空格(\space),Tab(\t),换行(\n)
  5. "\w" 匹配 字母,数字,下划线,汉字(等价于[0-9A-Za-z])
  6. "^" 匹配字符串的开始
  7. "$" 匹配字符串的结束
    .
  8. "" 代表""前面的内容可以重复任意的次数(可以是0次)
  9. "+" 代表"*"前面的内容可以重复任意的次数(最少1次)
  10. "?" 重复零次或者一次
  11. "{n}" 重复n次
  12. "{n,}" 重复n次或者更多次
  13. "{n,m}" 重复n到m次
    Example:
  14. (0\d{2})[- ]?\d{8}|0\d{2}[- ]?\d{8} : 这个表达式可以匹配几种格式的电话号码,像(010)88886666,或022-22334455,或02912345678等。分析:首先是一个转义字符(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。 中间的"|"代表"或"条件
  15. ((2[0-4]\d|25[0-5]|[01]?\d\d?).){3}(2[0-4]\d|25[0-5]|[01]?\d\d?) :描述一个正确的IP地址

二. Lua版本

-- 常规替换
x = string.gsub("hello world", "(%w+)", "lua")
print("\n",x)
-- 都用匹配的第一个串2来替换
x = string.gsub("hello world", "(%w+)", "%1 %1")
print("\n",x)
-- 用匹配出的完成串
2来替换第一次匹配的结果
x = string.gsub("hello world", "%w+", "%0 %0", 1)
print("\n",x)
-- 使用一个完整匹配和一个匹配的第二个串来替换
x = string.gsub("hello world from c to lua", "(%w+) (%a+)", "%0 %2")
print("\n",x)
-- 调用系统函数来替换
x = string.gsub("os = PATHEXT", "%return 4+5(.-)%name-(%w+)", t)
print("\n",x)

--userdata
tolua.type(userdata)
--cc.export.XX
--文件中返回类型名称

匹配模式:
( ) . % + - * ? [ ^ $
.(点): 与任何字符配对
%a: 与任何字母配对
%c: 与任何控制符配对(例如\n)
%d: 与任何数字配对
%l: 与任何小写字母配对
%p: 与任何标点(punctuation)配对
%s: 与空白字符配对
%u: 与任何大写字母配对
%w: 与任何字母/数字配对
%x: 与任何十六进制数配对
%z: 与任何代表0的字符配对
%b: 匹配对称字符里面的内容: 如 %b() , %b%{%}
%x(此处x是非字母非数字字符): 与字符x配对. 主要用来处理表达式中有功能的字符

  • 匹配前一字符1次或多次
  • 匹配前一字符0次或多次
  • 匹配前一字符0次或多次
    ? 匹配前一字符0次或1次
    ^ 匹配模式的补集 [^%d] 非数字

你可能感兴趣的:(正则表达式(C#和Lua))