我要将代码中第一个g到第一个括号的字符串匹配。我不知道为什么不这样做,因为我使用了转义字符。 例如,在此字符串上:
您好测试g55_2(cnn
我打算匹配g55_2 // g ++ 5.4.0
#include <iostream>
#include<regex>
#include<string>
int main()
{
std::string s("g.*\(");
std::regex re(s);
}
我在https://regex101.com/处尝试了我的正则表达式,并且可以使用,但是由于标题错误,我的c ++无法编译。
答案 0 :(得分:5)
您在C ++中转义了括号。正则表达式需要一个\字符(在C ++中需要转义)和一个(字符:
import pandas as pd
import matplotlib.pyplot as plt
a = [['2015-01-08', '174.0'], ['2015-01-09', '172.0'], ['2015-01-11', '170.5']]
df = pd.DataFrame(a, columns=["dates", "values"])
df["dates"] = pd.to_datetime(df["dates"])
df["values"] = pd.to_numeric(df["values"])
plt.plot("dates", "values", data=df)
plt.show()
或者,使用原始字符串文字来避免担心C ++逃脱自己的方式的麻烦:
std::string s("g.*\\(");
std::string s(R"(g.*\()");
内的文字文本被当作字符串。
还请注意,R"(...)"
是贪婪的,但是您不希望它贪婪,因此它会在第一个括号而不是最后一个括号处停止。您可以添加*
使其不贪心:
?