可选搜索和正则表达式
Optional search with regular expression
我有一个字符串" Mindate = 2013-12-01T08:00:00 Z& maxdate = 2014-01-01-01T12:00:00 Z"因此,我需要输出最小日期和最大日期。我使用的正则是" Mindate =(。*?((?:MAXDATE =((。*("
我得到正确的输出:
Full match `minDate=2013-12-01T08:00:00Z&maxDate=2014-01-01T12:00:00Z`
Group 1. `2013-12-01T08:00:00Z;`
Group 2. `2014-01-01T12:00:00Z`
现在,问题是"注意"或" maxdate"可以是可选的。表示输入可以是:
minDate=2013-12-01T08:00:00Z&maxDate=2014-01-01T12:00:00Z
或
minDate=2013-12-01T08:00:00Z
或
maxDate=2014-01-01T12:00:00Z
这将是什么正则是:
对于第一个输入,我应该获得第1组'2013-12-01T08:00:00:00 Z'和第2组为'2014-01-01-012:00:00:00z'
对于第二个输入,我应该获得Group1'2013-12-01T08:00:00Z'
对于第三个输入,我应该获取Group1'2014-01-01T12:00:00z'
您可以匹配并捕获minDate
或maxDate
成组1,将DateTime值匹配到第2组,然后您可以根据需要分配程序中的变量:
std::string maxDate = "";
std::string minDate = "";
std::regex r("(min|max)Date=([0-9-]+T[0-9A-Z:]+)");
std::string s = "minDate=2013-12-01T08:00:00Z&maxDate=2014-01-01T12:00:00Z";
for(std::sregex_iterator i = std::sregex_iterator(s.begin(), s.end(), r);
i != std::sregex_iterator();
++i)
{
std::smatch m = *i;
if (m[1].str()=="min") {
minDate = m[2].str();
std::cout << "Min date: " << minDate << endl;
} else {
maxDate = m[2].str();
std::cout << "Max date: " << maxDate << endl;
}
}
请参阅C 演示
输出:
Min date: 2013-12-01T08:00:00Z
Max date: 2014-01-01T12:00:00Z
模式详细信息
-
(min|max)
-捕获第1组(对此值进行检查(:min
或max
-
Date=
-字符串Date=
-
([0-9-]+T[0-9A-Z:]+)
-捕获第2组(其值是结果(:一个或多个数字或/和-
,然后是T
,然后是一个或多个大写ASCII字母,数字或/和:
。
相关文章:
- C++向后正则表达式搜索
- 可选搜索和正则表达式
- C++ 中用于搜索字符串模式的正则表达式
- 如何加快正则表达式搜索C++中大量潜在的大文件?
- 正则表达式C++如何搜索有效的 Linux 设备节点
- 对 std::string 执行正则表达式搜索和替换
- Eclipse IDE,正则表达式搜索和替换
- 尝试使用正则表达式搜索:C++
- 检索 C++ 中的正则表达式搜索
- 如何在c++中搜索正则表达式
- 在C++中使用正则表达式搜索.txt文件
- 找不到c++正则表达式搜索模式
- 相同的正则表达式搜索结果在C++和Java中有所不同
- 正则表达式搜索和替换C++中的组?
- C++ 使用正则表达式搜索"正则表达式运算符"
- 我如何在另一个进程的内存中通过正则表达式搜索字符串
- 用C++正则表达式搜索字符串中的文件路径
- 搜索/替换boost正则表达式
- 使用正则表达式搜索向量
- c++正则表达式搜索多行注释(在/* */之间)