C++ 用于区分十进制值和非十进制值的正则表达式
我的正则表达式有问题C++ 用于区分十进制值和非十进制值的正则表达式,c++,regex,C++,Regex,我的正则表达式有问题 regex nameInt("([A-Za-z]+)\\: ([0-9]+)"); regex nameDecimal("([a-zA-Z]+)\\: ([-+]?[0-9]+\\.[0-9]+)"); 我的意见如下: Jenny: 12 Mark: 12.6 但是我的输入只会标记小数,而不会标记整数。试试这些表达式 带int的行: [a-zA-Z]+\: \d+$ 带小数的行: [a-zA-Z]+\: \d+\.\d+$ 试试这些表达 带int的行: [a-zA-
regex nameInt("([A-Za-z]+)\\: ([0-9]+)");
regex nameDecimal("([a-zA-Z]+)\\: ([-+]?[0-9]+\\.[0-9]+)");
我的意见如下:
Jenny: 12
Mark: 12.6
但是我的输入只会标记小数,而不会标记整数。试试这些表达式
带int的行:
[a-zA-Z]+\: \d+$
带小数的行:
[a-zA-Z]+\: \d+\.\d+$
试试这些表达
带int的行:
[a-zA-Z]+\: \d+$
带小数的行:
[a-zA-Z]+\: \d+\.\d+$
以下是代码:
#包括
#包括
#包括
int main(){
使用名称空间std;
向量v_s={“Jenny:12”,“Mark:12.6”};
正则表达式reg_int(“^(.\\D+\ \:([+-]?.\\D+$”);
正则表达式双精度(“^(.\\D+\ \:([+-]?.\\D+\\.\\D+$”);
用于(const auto&s:v_s){
if(std::regex_匹配(s,reg_int))
cout下面是代码:
#包括
#包括
#包括
int main(){
使用名称空间std;
向量v_s={“Jenny:12”,“Mark:12.6”};
正则表达式reg_int(“^(.\\D+\ \:([+-]?.\\D+$”);
正则表达式双精度(“^(.\\D+\ \:([+-]?.\\D+\\.\\D+$”);
用于(const auto&s:v_s){
if(std::regex_匹配(s,reg_int))
您可以针对整个多行字符串或单个行测试这些代码吗?(有或没有换行符?使用regex\u match
或regex\u search
?)需要的不仅仅是几个代码片段。您是针对整个多行字符串或单个行测试这些代码吗?(带或不带换行符?带regex\u匹配
或regex\u搜索
?)需要一个而不仅仅是几个片段。你能解释一下它与OP的正则表达式有何不同以及为什么它能解决问题吗?你能解释一下它与OP的正则表达式有何不同以及为什么它能解决问题吗?你知道什么是\\D+
匹配的吗?OP只需要字母数字。\D表示一个不是数字的字符。我可以说“([a-Za-z]+)\:([0-9]+)“也可以,前面的点是用来做什么的?你知道\\D+
匹配的是什么吗?OP只需要字母数字。\D表示一个不是数字的字符。我知道任何情况下”([a-Za-z]+\\:([0-9]+)”也可以,前面的点是用来做什么的?