目录

正则表达式可用于MySQLCPython

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

正则表达式(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;
}

https://i-blog.csdnimg.cn/direct/8835d8a8743b4de595f2f4a29e73a644.png

全文搜索search

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

https://i-blog.csdnimg.cn/direct/a07d80181aa84144a85d545a33ea83fc.png

文本替换replace

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

https://i-blog.csdnimg.cn/direct/d8cdb871741840f280ddc9739aac419b.png

Python中的正则表达式

简单示例:

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

感谢大家!