【发布时间】:2023-03-15 17:08:01
【问题描述】:
我目前将 regex.h 用于 c 程序
希望确保字符串以围绕字母数字字符的 @ 开头和结尾,(中间只有 2 个 @ 没有)
更新:我想我通过使用 ^ 和 $ 锚标记解决了第一个问题。如果这看起来不是解决问题的正确方法,请告诉我。
我现在的代码:
(regexCheck(tag, "^[@]+[A-Za-z0-9]+[@]$") == 1)
此外,我想确保字符串包含带有字母数字字符的 _(例如 _test、te_st、test_ 都有效,但 test 无效)
我现在的代码:
(regexCheck(string, "[A-Za-z0-9_]")) == 1
如有任何帮助,我们将不胜感激,但也希望能提供正则表达式语法的解释。
【问题讨论】:
-
我不记得不同正则表达式风格之间的差异,但你试过
^@[a-zA-z0-9]+_[a-zA-Z0-9]+$吗? -
中间需要多少个 alpha?
@_@是一个有效的字符串吗? -
是的 @_@ 是一个有效的字符串...但我想我用 (regexCheck(tag, "^[@]+[A-Za-z0- 9]+[@]$") == 1)
-
每个问题只问一个问题。如果有一些让您感到困惑的一般概念(例如“我如何确保正则表达式匹配整个字符串?”),那么这是一个更好的问题。
-
第一个正则表达式看起来会不必要地匹配
@@a@和@ab@并且会无意地不匹配@a_b@。如果我正确理解您的目标,您想解决所有这些问题,对吗?我有一个可以修复它们的解决方案,但它也可以匹配@_@,可以吗?您的问题也可以被解读为要求 @ 至少一个字母数字之间的任何位置。 IE。它应该匹配@a_@和@_b@但不匹配@_@。有必要吗?
标签: c regex expression regular-language qregularexpression