我必须在','
上的 PostgreSQL 中拆分一些字符串,但不要在'\,'
上拆分(反斜杠是转义字符)。
例如,regexp_split_to_array('123,45,67\,89', ???)
必须将字符串拆分为数组{123, 45, "67\,89"}
。
已完成的工作:E'(?<!3),'
与'3'
一起用作转义字符。但是我如何使用反斜杠而不是3?
不起作用:
E'(?<!\),'
根本不拆分字符串
E'(?<!\\),'
抛出错误&#34;括号()不平衡&#34;
E'(?<!\ ),'
(带空格)拆分所有','
,包括'\,'
E'(?<!\\ ),'
(带空格)也会在所有','
上分割。
答案 0 :(得分:4)
文本前面的字母 #include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/objdetect.hpp>
#include <opencv2/core.hpp>
#include <opencv2/face.hpp>
#include <opencv2/imgcodecs.hpp>
#include <iostream>
#include <string>
using namespace std;
using namespace cv;
using namespace face;
int main(void)
{
vector <Mat> images; // vector of matrix for the images of the faces;
vector <int> labels; // vector of int's for the labes (each person get label ex: moshe - 0);
try {
images.push_back(imread("D:\\imagesForProject\\1.JPG", CV_LOAD_IMAGE_GRAYSCALE)); // insert the face image;
labels.push_back(0); // insert his label;
images.push_back(imread("D:\\imagesForProject\\2.JPG", CV_LOAD_IMAGE_GRAYSCALE)); // insert the face image;
labels.push_back(1); // insert his label;
}
catch (Exception& e) {
cerr << "can't open the images" << e.msg << endl; // if we couldn't open the files cerr it's basic cout for errors;
}
Ptr<FaceRecognizer> model = FisherFaceRecognizer::create();
model->train(images, labels);
model->save("xx.xml");
return(0);
}
表示 C字符串,然后您必须转义两次,一个用于 C字符串和一个用于 regexp 。
尝试使用和不使用 E
:
E
此处http://rextester.com/VEE84838正在运行的示例(regexp_split_to_array('123,45,67\,89', '(?<!\\),')
regexp_split_to_array('123,45,67\,89', E'(?<!\\\\),')
仅用于逐行显示结果):
unnest()
答案 1 :(得分:0)
您还可以先将其拆分为群组:
(\ d +),(\ d + \,\ d +)?
(稍后用逗号连接它们)