✨博客主页 | |
---|---|
何曾参静谧的博客 | |
文章专栏 | |
「C/C++」C/C++程序设计 | |
全部专栏 | |
「UG/NX」NX二次开发 | 「UG/NX」BlockUI集合 |
「VS」Visual Studio | 「QT」QT5程序设计 |
「C/C++」C/C++程序设计 | 「Win」Windows程序设计 |
「DSA」数据结构与算法 | 「File」数据文件格式 |
正则表达式说明:
正则表达式:
是一种用于描述和匹配字符串模式的工具。正则表达式功能:
模式匹配:
检查一个字符串是否与指定模式匹配。字符串搜索和替换:
在一个文本中搜索并替换符合规则的字符序列。字符串分割:
根据模式将字符串切分成多个部分。校验输入:
对用户输入进行验证,以确保其符合特定格式要求。数据提取:
从字符串中抽取特定的信息、数据或属性。
在线正则表达式测试工具【英文】:https://regex101.com/
在线正则表达式测试工具【中文】:https://regexr-cn.com/
在线正则表达式练习工具:https://www.codejiaonang.com/#/courses
在线正则表达式说明工具:https://r2coding.com
字符标识 | 含义 |
---|---|
. |
除换行符外的任意字符 |
* |
前面的子表达式零次或多次 |
+ |
前面的子表达式一次或多次 |
? |
前面的子表达式零次或一次 |
| |
或运算符。并集,可以匹配符号前后的表达式。 |
[] |
匹配方括号中列举的任意一个字符 |
[^] |
匹配除了方括号中列举的任意一个字符以外的任意字符 |
() |
捕获组,用于分组和提取匹配结果 |
{n} |
重复n次 |
{n,} |
重复n次或更多次 |
{n,m} |
重复n到m次 |
\d |
任意一个数字字符(0-9) |
\D |
任意一个非数字字符 |
\w |
任意一个单词字符(字母、数字、“_”) |
\W |
任意一个非单词字符 |
\s |
任意一个空白字符(空格、制表符、换行符等) |
\S |
任意一个非空白字符 |
\b |
单词边界 |
\B |
非单词边界 |
^ |
行的开头(或在 [] 中表示取反) |
$ |
行的结尾 |
\ |
转义字符,用于转义特殊字符 |
转义字符 | 说明 |
---|---|
\n |
换行 |
\t |
横向跳格(制表符) |
\v |
竖向跳格 |
\b |
退格 |
\r |
回车 |
\f |
走纸换页 |
\\ |
反斜杠字符 \ |
\' |
单引号字符 ’ |
\a |
鸣玲 |
\ddd |
1到3位八进制数所代表的字符 |
\xhh |
以十六进制表示的字符(例如,\x41 表示大写字母 ‘A’) |
\uhhhh |
以十六进制表示的 Unicode 字符(例如,\u0041 表示大写字母 ‘A’) |
\Uhhhhhhhh |
以十六进制表示的长形式 Unicode 字符 |
代码 | 说明 |
---|---|
*? |
重复任意次,但尽可能少重复 |
+? |
重复1次或更多次,但尽可能少重复 |
?? |
重复0次或1次,但尽可能少重复 |
{n,m}? |
重复n到m次,但尽可能少重复 |
{n,}? |
重复n次以上,但尽可能少重复 |
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
^(?:https?:\/\/)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(?:\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+$
/^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/gm
^[1-9]\\d{5}(18|19|20)\\d{2}(0\\d|10|11|12)([0-2]\\d|30|31)\\d{3}[0-9Xx]$
<([a-zA-Z]+)(?:\\s+[a-zA-Z]+=\"[^\"]*\")*>\\s*([\\w\\W]*?)\\s*\\1>
(https?|ftp)://([\\w_-]+(\\.[\\w_-]+)+)(:[0-9]+)?(/\\S*)?
(\d{4})/(\d{2})/(\d{2})
替换为 \3-\2-\1
\s+
替换为空格\\s*,\\s*
所属头文件:
#include
组件名称 | 作用 |
---|---|
std::regex |
表示一个正则表达式的对象 |
std::regex_match |
将一个字符序列与正则表达式进行完全匹配 |
std::regex_search |
在字符序列中搜索满足正则表达式的第一个子序列 |
std::regex_replace |
使用给定的格式替换字符串中满足正则表达式的部分 |
std::sregex_iterator |
迭代器适配器,用于遍历字符串中所有与正则表达式匹配的子序列 |
std::smatch |
存储与正则表达式匹配的结果的容器类 |
std::ssub_match |
存储在字符串中与子表达式匹配的结果的容器类 |
std::regex
#include
#include
int main() {
std::string input = "Hello, World!";
std::regex pattern("Hello");
if (std::regex_match(input, pattern)) {
std::cout << "Pattern matched." << std::endl;
} else {
std::cout << "Pattern not matched." << std::endl;
}
return 0;
}
std::regex_match
#include
#include
int main() {
std::string input = "1234";
std::regex pattern("\\d+");
if (std::regex_match(input, pattern)) {
std::cout << "Input string matches the pattern." << std::endl;
} else {
std::cout << "Input string does not match the pattern." << std::endl;
}
return 0;
}
std::regex_search
#include
#include
int main() {
std::string input = "Hello, World!";
std::regex pattern("World");
std::smatch match;
if (std::regex_search(input, match, pattern)) {
std::cout << "Pattern found: " << match.str() << std::endl;
} else {
std::cout << "Pattern not found." << std::endl;
}
return 0;
}
std::regex_replace
#include
#include
int main() {
std::string input = "Hello, World!";
std::regex pattern("World");
std::string replaced = std::regex_replace(input, pattern, "Universe");
std::cout << "Replaced string: " << replaced << std::endl;
return 0;
}
std::sregex_iterator
#include
#include
int main() {
std::string input = "Hello, 2021! This is a sample string with numbers 1234.";
std::regex pattern("\\d+");
std::sregex_iterator iter(input.begin(), input.end(), pattern);
std::sregex_iterator end;
std::cout << "Matches found: ";
for (; iter != end; ++iter) {
std::cout << iter->str() << " ";
}
std::cout << std::endl;
return 0;
}
正则表达式30分钟入门教程——作者:deerchao
微软.NET正则表达式