如果数字不在 //Opening the text file from the path given
char * dataset;
int dataLength;
ifstream in(path);
if (!in) {
cout << "Could not open the file." << endl;
exit(-1);
}
//Calculating the number of characters in the file
in.ignore(numeric_limits<streamsize>::max());
dataLength = in.gcount();
//Clearing since EOF bit is set after ignore method above
in.clear();
in.seekg(0, ifstream::beg);
//Initializing the dataset array and copying the data
dataset = new T[dataLength + 1];
in.read(dataset, dataLength);
dataset[dataLength] = '\0';
之前,则尝试使用否定的前瞻匹配数字。
%
。
\d+(?!%)
。
//匹配898,但不匹配9%。
我希望它与整体8989相匹配。
在匹配整个字符类或更复杂的正则表达式时,是否还可以使用否定的前瞻性?
8989%
。
[\d.+](?!%)
。
它将匹配\d+(\.\d{1,2})?(?!%)
答案 0 :(得分:3)
\d+(?!%)
模式匹配一个或多个数字,并首先在8989
中抢占8989%
,但是(?!%)
否定超前匹配失败,引擎看到+
量词开始回溯。它会从匹配缓冲区中丢弃最后一个9
,并重试(?!%)
前瞻,因为在898
之后没有%
符号,因此成功了。
您可以使用
/\d+(?![\d%])/g
请参见regex demo
如果1+个数字后跟任意数字或(?![\d%])
,则%
否定超前匹配将失败,因此不会返回1个数字后跟{{ 1}}符号。