C++ 用于筛选字符串的正则表达式

C++ 用于筛选字符串的正则表达式,c++,regex,string,pattern-matching,C++,Regex,String,Pattern Matching,我需要根据两个要求过滤字符串 1) 它们必须以“城市日期”开头 2) 他们不应该在任何地方都有“地铁” 这需要在一次检查中完成 首先,我知道应该是这样,但不知道如何用“metro”消除字符串 添加:我需要将正则表达式用于类似SQL的语句。因此,我需要一个字符串 使用a(我不知道您的正则表达式库是否支持此功能) 我还在开始处添加了一个锚点^,它将匹配字符串的开始 如果前面某个地方有字符串“metro”,则否定的前瞻断言(?!*metro)将失败。使用a(我不知道您的正则表达式库是否支持此操作) 我

我需要根据两个要求过滤字符串

1) 它们必须以“城市日期”开头

2) 他们不应该在任何地方都有“地铁”

这需要在一次检查中完成

首先,我知道应该是这样,但不知道如何用“metro”消除字符串

添加:我需要将正则表达式用于类似SQL的语句。因此,我需要一个字符串

使用a(我不知道您的正则表达式库是否支持此功能)

我还在开始处添加了一个锚点
^
,它将匹配字符串的开始

如果前面某个地方有字符串“metro”,则否定的前瞻断言
(?!*metro)
将失败。

使用a(我不知道您的正则表达式库是否支持此操作)

我还在开始处添加了一个锚点
^
,它将匹配字符串的开始


如果前面某个地方有字符串“metro”,则负前瞻断言
(?!*metro)
将失败。

正则表达式通常比直接比较昂贵得多。如果直接比较可以很容易地表达需求,那么就使用它们。这个问题不需要正则表达式的开销。只需编写代码:

std::string str = /* whatever */
const std::string head = "city_date";
const std::string exclude = "metro";
if (str.compare(head, 0, head.size) == 0 && str.find(exclude) == std::string::npos) {
    // process valid string
}

正则表达式通常比直接比较要昂贵得多。如果直接比较可以很容易地表达需求,那么就使用它们。这个问题不需要正则表达式的开销。只需编写代码:

std::string str = /* whatever */
const std::string head = "city_date";
const std::string exclude = "metro";
if (str.compare(head, 0, head.size) == 0 && str.find(exclude) == std::string::npos) {
    // process valid string
}
通过使用javascript

input="contains the string your matching"

var pattern=/^city_date/g;
if(pattern.test(input))  // to match city_data at the begining
{
var patt=/metro/g;
if(patt.test(input)) return "false";  
else return input; //matched string without metro
}
else
return "false"; //unable to match city_data
通过使用javascript

input="contains the string your matching"

var pattern=/^city_date/g;
if(pattern.test(input))  // to match city_data at the begining
{
var patt=/metro/g;
if(patt.test(input)) return "false";  
else return input; //matched string without metro
}
else
return "false"; //unable to match city_data

这个不需要正则表达式..看.能告诉我需要什么吗?顺便说一句,我知道我需要一个正则表达式来满足我的需要。这就是你所需要的
如果(s.substr(0,9)=“city\u date”和&s.find(“metro”)==string::npos)
,我想正则表达式就太过分了。“只需一次检查”的要求是愚蠢的。请看,这不需要正则表达式。请看。能告诉我需要什么吗?顺便说一句,我知道我需要一个正则表达式来满足我的需要。这就是你所需要的
如果(s.substr(0,9)=“city\u date”和&s.find(“metro”)==string::npos)
,我想正则表达式就太过分了。“仅一次检查”的要求是愚蠢的。请参阅和