正则表达式(可用于MySQL、C++、Python)

发布于:2025-03-20 ⋅ 阅读:(17) ⋅ 点赞:(0)

正则表达式(Regular Expression,简称 regex 或 regexp)是一种用于描述文本模式的字符串。它通过特定的语法规则,允许你匹配、搜索和操作字符串中的内容。

正则表达式可以用来:

  1. 匹配文本:可以在字符串中查找符合特定模式的文本,如查找邮件地址、电话号码等。
  2. 文本替换:能够使用匹配到的模式对文本进行替换操作,比如将所有的逗号替换为句号。
  3. 数据验证:用于验证输入数据的格式,例如检查用户输入的密码是否符合特定规则。
  4. 分割字符串:可以根据匹配的模式对字符串进行分割,例如根据空格、逗号等分隔符将词句拆分成单词。

正则表达式的通用语法

正则表达式由普通字符(如字母和数字)和特殊字符(用于匹配特定类型的字符或模式)组成。

-- 匹配单个字符
"snm":包含 'snm' 即可匹配
"s|n|m":包含's' or 'n' or 'm'即可匹配
"[snm]":包含's' or 'n' or 'm'即可匹配
"[a-z]":包含字母a-z任意一个即可匹配
"[1-9]":包含数字1-9任意一个即可匹配
'\\':转义字符
'.' :匹配任意单个字符

-- 匹配字符类
[[:alnum:]] : 任意字母和数字=>[a-zA-Z0-9]
[[:digit:]] : 任意数字=>[0-9]
[[:lower:]] : 任意小写字母=>[a-z] 
[[:upper:]] : 任意大写字母=>[A-Z]
[[:alpha:]] : 任意字母 =>[a-zA-Z]
[[:xdigit:]] : 任意十六进制数字=>[a-fA-F0-9] 
[[:blank:]] : 空格和制表符 =>[\\t]
[[:space:]] : 包括空格在内的任意的空白字符=>[\\f\\n\\r\\t\\v]

[[:cntrl:]] : ASCII控制字符(ASCII 0到31 和 127)
[[:print:]] : 任意的可打印出来的字符 
[[:graph:]] : 相对于print,不匹配空格 
[[:punct:]] : 非字母、非数字、非ASCII控制字符 

-- 匹配多个字符
'^S' :必须以S开始
'S$' :必须以S结尾
'^S$':只能是S

* 任意个匹配"S*"任意个(可以0)S即可匹配
+ 任意个匹配"S*"任意个(至少1)S即可匹配
? 0个或1个


{n}  指定n个
{n,} 至少n个
{n,m} n到m个

MySQL数据库中的正则表达式

-- regexp为MySQL中正则表达式的关键字
select * from emp where ename 
regexp "正则表达式";

C++中的正则表达式

完全匹配match

int main() {
	regex re_num("[0-9]*");//用于匹配任意数字串
	cout << regex_match("464664841650", re_num) << endl;
	cout << regex_match("4646648a41650", re_num) << endl;
	return 0;
}

全文搜索search

int main() {
	regex re_num("[0-9]*");//用于匹配任意数字串
	bool isfind = regex_search("askdgkasg123asdf",re_num);
	cout << isfind << endl;
	return 0;
}

文本替换replace

int main() {
	regex re_num("[0-9]+");//用于匹配任意数字串
	string s = "123abc";
	cout<< regex_replace(s, re_num, "kkk");
	return 0;
}

Python中的正则表达式

简单示例:

pattern = ""
words = input()
re.match(pattern, words)

感谢大家!