我想提取,
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查询中的问题。
请帮忙。

最佳答案

根据PostgreSQL regex documentation,您需要使用\m作为单词的开头,使用\M作为单词边界的结尾。\b表示退格。所以,你的regex应该喜欢:

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' )

09-07 04:03