c++ - 使用 RegExp 检测像 "#smth"这样的文本(还有一些术语)

标签 c++ regex qt qregexp

我的正则表达式真的很烂,所以请帮助我。

我需要在字符串中找到任何片段,例如 #text

text 不得包含任何空格字符 (\\s)。它的长度必须至少为 2 个字符 ({2,}),并且它必须至少包含 1 个字母 (QChar::isLetter())。

示例:

  • #c, #1, #123456, #123 456, #123_456 不正确
  • #cc, #text, #text123, #123text 都是正确的

我使用 QRegExp。

最佳答案

QRegExp rx("#(\\S+[A-Za-z]\\S*|\\S*[A-Za-z]\\S+)$");
bool result = (rx.indexIn(str) == 0);

rx 要么找到一个非空白后跟一个字母和未指定数量的非空白字符,要么找到一个后跟至少一个非空白的字母。

关于c++ - 使用 RegExp 检测像 "#smth"这样的文本(还有一些术语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11131729/

相关文章:

c++ - 头文件基本上是预先编写的类吗? C++

c++ - 使用 VST 插件失真的音频

php - 如何在 PHP 中使用正则表达式中断查询

javascript - 添加冒号(:) after every 2nd character using Javascript

python - 需要在特定条件下从文本文件中删除换行符

qt - 如何使用 QTest::mouseClick 和 QAction

c++ - 这个 C++ 临时绑定(bind)到引用成员应该是非法的吗?

c++ - 在 C++ 中读取带有引号的 CSV/文本文件

c++ - QVector指针的指针

c++ - 使用 QRegularExpression 提取双引号内的字符串