*. 可以使用正则表达式进行比较
how *. can be compared using regular expression?
string str;
if (str = 1.t) || (str = 2.t) || ........ || (str = n.t) {
// some code
}
基本上我必须检查int后面跟着"。t"
您想要的正则表达式是[0-9]+.t
使用增加。如果你需要一个正则表达式引擎
如果您的字符串始终是int后跟.t
- 在 中查找子字符串
- 如果你找到它,从 字符串中删除它
- 尝试将字符串转换为数字(如
boost::lexical_cast
,因为这将抛出一个异常,如果它不能转换字符串),失败,尝试strtol
并检查它是否消耗了完整的字符串。
.t
为了使用c++中的regExp功能,必须使用额外的库,而boost提供了这样的功能。我发现johndcook.com下面的解释很有帮助。
对于这种情况,正则表达式是多余的。
试试这个:
bool testIntFollwedByTab(std::string const& test)
{
std::stringstrean teststream(test);
int num;
char c;
return (teststream >> std::noskipws >> num >> c) && (c == 't');
}
- 将字符串
test
放入流中。 - 然后从流中读取一个后跟字符的数字。操纵符
noskipws
表明空白是重要的(否则数字和字符前的前导空白将被静默删除)。- 如果失败(因为没有数字后跟字符),则设置流的坏位,并将流转换为false,返回语句返回false。
- 如果这是成功的,然后我们测试,看看是否字符读取为't'
或者在正常代码中(一行):
int num; char c;
if ((std::stringstream(str) >> std::noskipws >> num >> c) && (c == 't'))
{
// Do Work
}
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- 使用 boost::regex (c++) 比较两个正则表达式
- 我想一次将一个字符串与许多不同的正则表达式进行比较
- 比较读行和正则表达式
- 比较qt中的正则表达式
- *. 可以使用正则表达式进行比较
- 比较(C)字符串中的特殊字符的正则表达式