gpt4 book ai didi

c++ - 正则表达式有效和无效在一起

转载 作者:行者123 更新时间:2023-11-30 05:16:34 25 4
gpt4 key购买 nike

我只想用正则表达式检测以下项目的有效项目。单词中空格无效,#符号无效,数字开头的单词无效。

Invalid : M_123 ASD
Invalid : M_123#ASD
Invalid : 1_M# ADD
Valid : M_125ASD
Valid : M_125$ASD

我正在尝试如下:

[A-Za-z0-9_$]

工作不正常。我需要为一个词同时设置有效集和无效集。

我可以用正则表达式进行匹配吗?

最佳答案

您的正则表达式 [A-Za-z0-9_$] 提供了一个字符类,该字符类匹配单个字符,该字符可以是 ASCII 字母或数字,也可以是 _$ 符号。如果您将它与 std::regex_match 一起使用,它只会匹配仅由一个字符组成的整个字符串,因为在与该字符一起使用时该模式默认锚定方法。如果将它与 std::regex_search 一起使用,像 ([_]) 这样的字符串将会通过,因为正则表达式不是锚定并且可以找到部分匹配项。

要匹配 0 个或多个字符,您需要在类后添加 * 量词。要匹配一个或多个字符,您需要在字符类后添加 + 量词。但是,您还有一个额外的限制:数字不能出现在开头。

看来你可以用

^[A-Za-z][A-Za-z0-9_$]*$

参见 regex demo at regex101.com .

详细信息:

  • ^ - 字符串的开始
  • [A-Za-z] - 一个 ASCII 字母(恰好出现一次)
  • [A-Za-z0-9_$]* - 0+ ASCII 字母、数字、_$
  • $ - 字符串 anchor 的结尾。

请注意,对于 regex_match,您可以省略 ^$ anchor 。

关于c++ - 正则表达式有效和无效在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42605811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com