正则表达式是一种强大的文本处理工具,用于匹配、查找、替换或分割符合特定模式的字符串。下面是一些基本的正则表达式规则和示例:
基本规则
`^` 表示字符串的开始。
`$` 表示字符串的结束。
`.` 匹配任意单个字符(除了换行符)。
`\d` 匹配数字(0-9)。
`\w` 匹配字母、数字或下划线。
`\s` 匹配空白字符(空格、制表符、换行符等)。
`*` 表示前面的元素可以出现零次或多次。
`+` 表示前面的元素必须出现一次或多次。
`?` 表示前面的元素可以出现零次或一次。
`{n,m}` 表示前面的元素至少出现 n 次,至多出现 m 次。
`|` 表示“或”,匹配前后两个表达式中的任意一个。
`()` 用于分组,改变运算符的作用范围。
`[]` 用于匹配方括号内的任意一个字符。
`[^]` 用于匹配不在方括号内的任意一个字符。
`\` 用于转义特殊字符。
修饰符
`i`:不区分大小写。
`g`:全局匹配,即匹配所有符合条件的子串。
`m`:多行模式,`^` 和 `$` 可以匹配每一行的开始和结束。
`u`:启用 Unicode 模式。
`y`:粘性模式,使 `^` 和 `$` 匹配每一行的开始和结束。
示例
匹配手机号
import re
text = "我的手机号是,他的是"
phone_pattern = r'1[3-9]\d{9}'
result = re.findall(phone_pattern, text)
print(result) ['', '']
验证日期格式(YYYY-MM-DD)
import re
def validate_date(date):
pattern = r'^\d{4}-\d{2}-\d{2}$'
if re.match(pattern, date):
return True
else:
return False
print(validate_date("2023-09-20")) True
匹配邮箱地址
import re
email_pattern = r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'
email = ""
if re.match(email_pattern, email):
print("Valid email")
else:
print("Invalid email")
创建正则表达式
构造函数创建
var reg = new RegExp("javascript", "i");
字面量创建
var reg = /javascript/i;
常用元字符的等价简写
`?` 等价于 `{0,1}`
`*` 等价于 `{0,}`
`+` 等价于 `{1,}`
`\d` 等价于 `[0-9]`
`\D` 等价于 `[^0-9]`
`\w` 等价于 `[A-Za-z0-9]`
`\W` 等价于 `[^A-Za-z0-9]`
预查和分组
`(?=pattern)` 正向预查
`(?!pattern)` 负向预查
`(?:pattern)` 非捕获分组
引用
`\1` 引用第一个捕获分组
`\2` 引用第二个捕获分组
替换和回调
在替换函数中可以使用捕获分组来返回不同的替换值
编译正则表达式
`re.compile(pattern)` 可以将正则表达式编译成对象,提高匹配效率
注意
特殊字符需要使用 `\` 进行转义。
正则表达式的写法可能因编程语言而异,但基本规则和元字符是通用的。
希望这些信息能帮助你理解正则表达式的书写和使用