我想要一个C++正则表达式匹配"香蕉"或"睡衣"但不是"bananas2"或"bananaspajamas"或"香蕉"或基本上除了那些确切的两个单词之外的任何东西.所以我这样做了:
#include <regex.h>
#include <stdio.h>
int main()
{
regex_t rexp;
int rv = regcomp(&rexp, "\\bbananas\\b|\\bpajamas\\b", REG_EXTENDED | REG_NOSUB);
if (rv != 0) {
printf("Abandon hope, all ye who enter here\n");
}
regmatch_t match;
int diditmatch = regexec(&rexp, "bananas", 1, &match, 0);
printf("%d %d\n", diditmatch, REG_NOMATCH);
}
Run Code Online (Sandbox Code Playgroud)
它打印1 1好像没有匹配.发生了什么?我也试过\bbananas\b|\bpajamas\b我的正则表达式而且也失败了.
我问std :: regex 使用正则表达式进行全字匹配,但是std :: regex很糟糕,所以我正在尝试使用regex.h.
Bat*_*eba -1
使用
s == "balances" || s == "pajamas"
相反,哪里s是 a std::string。
正则表达式可能会使简单的解决方案变得过于复杂。如果您想要固定的比赛,请特别避免使用它们。
| 归档时间: |
|
| 查看次数: |
885 次 |
| 最近记录: |