PostgreSQL中的正则表达式排除

时间:2017-12-25 15:03:11

标签: regex postgresql

我必须在','上的 PostgreSQL 中拆分一些字符串,但不要在'\,'上拆分(反斜杠是转义字符)。 例如,regexp_split_to_array('123,45,67\,89', ???)必须将字符串拆分为数组{123, 45, "67\,89"}

已完成的工作:E'(?<!3),''3'一起用作转义字符。但是我如何使用反斜杠而不是3?

不起作用:

E'(?<!\),'根本不拆分字符串

E'(?<!\\),'抛出错误&#34;括号()不平衡&#34;

E'(?<!\ ),'(带空格)拆分所有',',包括'\,'

E'(?<!\\ ),'(带空格)也会在所有','上分割。

2 个答案:

答案 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 +)?

(稍后用逗号连接它们)