如何在正则表达式中匹配'*'
How can I match '*' in a regex
本文关键字:正则表达式 更新时间:2023-10-16
我正在尝试用C实现正则表达式,我有以下代码来查找其中包含"*"的所有字符串,
regex_t regex;
regcomp(®ex, "^[A-Za-z0-9*]+$", 0);
if (!regexec(®ex, args[j], 0, NULL, 0)) {
printf("string found");
}
这样做对吗?我的代码与包含"*"的字符串不匹配。如有任何帮助,我们将不胜感激。
在C++中,字符需要转义。因此,如果要转义正则表达式
*
,则需要执行\*
。这应该能解决问题。无论何时在字符串中使用反斜杠,都需要像这样对其进行转义。如果您需要使用regex在字符串中查找它,则需要使用\\
进行搜索。
除了Pawel的答案之外,在C++11中,您还可以使用原始字符串文字来简化它:
regcomp(®ex, R"(^[A-Za-z0-9*]+$)", 0);
(当然,如果您想在正则表达式中使用()
字符,则必须选择另一个分隔符)。
相关文章:
- 使用正则表达式regex_search在字符串中查找字符串
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++正则表达式无限循环
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- 定义有趣的宏和正则表达式在Z3 C++绑定
- 带有多个字符分隔符的正则表达式
- C++ 使用增强正则表达式库时断言崩溃
- 有人可以帮助我处理正则表达式吗?
- 使用正则表达式获取大括号块的列表
- 正则表达式以匹配数字的重复模式,后跟任何类型的分隔符?
- 组合正则表达式部分使用 | 不起作用的 C++
- 为什么C++正则表达式这么慢?
- 如何使HTML5电子邮件验证正则表达式在C++中工作?
- 在C++中实现正则表达式
- C++正则表达式替换整个单词
- 用C++编写正则表达式的正确方法是什么?
- 如何从Stroustrup的C++书中解释这个正则表达式?
- 为什么这个正则表达式C++在括号表达式中抛出无效范围异常?
- C++:匹配正则表达式,什么是匹配?
- C++:正则表达式匹配代码,打印多个匹配项?