gpt4 book ai didi

c++ - C++ 11 中的正则表达式

转载 作者:太空宇宙 更新时间:2023-11-04 15:21:56 24 4
gpt4 key购买 nike

我在 C++ 11 的正则表达式前写了这一行:

regex a("(\\w\\d)+(\\W)?(*)(\\W)?(\\w\\d)+");

我想找到像 A * B 这样的短语(A或B可以是数字)和空格是可选的

但是在这一行它抛出一个豁免!这行代码有什么问题?

最佳答案

转义星号(不确定是否应该使用单反斜杠或双反斜杠转义,但如果我错了请纠正我!):

regex a("(\\w\\d)+(\\W)?(\\*)(\\W)?(\\w\\d)+");
^^

星号是正则表达式中的一个字符,表示一个字符或一组字符出现 0 次或多次。

单独使用 (*) 是无效的,会导致“异常”:)

不过,要让它工作,您需要这个正则表达式:

regex a("(\\w)+(\\W)?(\\*)(\\W)?(\\w)+");

这应该匹配您的字符串 A * B

\w(或 \\w)在你的情况下匹配数字和字母,所以不用担心使用 \\d,因为按照您的书写方式,它将匹配一个字母数字字符(或下划线)和一个数字。

最后,如果你只想匹配而不想捕获,这应该仍然有效:

regex a("\\w+\\W?\\*\\W?\\w+");

附录:

regex rx{ R"((\w)+\W?(\*)\W?(\w)+)" };
cout << regex_replace("A * B", rx, "($1$2$3)");

关于c++ - C++ 11 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16800067/

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