我需要从给定的正则表达式中获取价值。
例如:
> :"postalCode";s:4:"3150";
有没有办法可以从列值的这一部分中提取3150。列值存储了序列化对象,因此postalCode变量可以是null类型,这样我应检查正整数是否跟在; s:POSITIVE_INT:“postalCodeValue
答案 0 :(得分:2)
使用#include "H5Cpp.h"
#include <vector>
#include <iostream>
int main()
{
// open file
H5::H5File fid = H5::H5File("example.h5",H5F_ACC_RDONLY);
// open dataset, get data-type
H5::DataSet dataset = fid.openDataSet("/path/to/string");
H5::DataSpace dataspace = dataset.getSpace();
H5::StrType datatype = dataset.getStrType();
// allocate output
std::string data;
// read output
dataset.read(data, datatype, dataspace);
std::cout << data << std::endl;
}
:
SUBSTRING_INDEX
此查询将提取字符串中最后引用的数字。
答案 1 :(得分:0)
避免使用regexp你可以使用一些字符串函数,例如:
SELECT LENGTH(':"postalCode";s:4:"3150"') - LOCATE(':', REVERSE(':"postalCode";s:4:"3150"'))+1
from dual ;
或
SELECT LENGTH(col_name) - LOCATE(':', REVERSE(col_name))+1
from my_table ;
答案 2 :(得分:0)
它也可以使用2次 SUBSTRING_INDEX
SELECT
SUBSTRING_INDEX (SUBSTRING_INDEX( ':"postalCode";s:4:"3150";', '"',-2) , '"', 1);