我想提取,
002267b4-ad06-11e4-89ca-59f94b49bbc0
来自另一个字符串的上述字符串。我试过的是,
select regexp_matches('class 1 type 1 cat 1 002267b4-ad06-11e4-89ca-59f94b49bbc0' , '\b\w{1,8}\-\w{1,4}\-\w{1,4}\-\w{1,4}\-\w{1,12}\b' )
这不会给出任何结果,但是当我从在线工具检查正则表达式时,它会选择我想要的正确字符串。必须是postgresql查询中的问题。
请帮忙。
答案 0 :(得分:2)
根据PostgreSQL regex documentation,您需要使用\m
作为单词的开头,\M
作为单词边界的结尾。 \b
表示退格。所以,你的正则表达式应该如下:
select regexp_matches('class 1 type 1 cat 1 002267b4-ad06-11e4-89ca-59f94b49bbc0' , '\m\w{1,8}\-\w{1,4}\-\w{1,4}\-\w{1,4}\-\w{1,12}\M' )
答案 1 :(得分:1)
尝试此查询:
SELECT regexp_matches(
'class 1 type 1 cat 1 002267b4-ad06-11e4-89ca-59f94b49bbc0',
'[^-]{1,8}-[^-]{1,4}-[^-]{1,4}-[^-]{1,4}-[^-]{1,12}'
);