regexp_matches函数不提供任何结果

regexp_matches函数不提供任何结果,regex,postgresql,Regex,Postgresql,我想提取 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' ) 这不会给出任何结果,但当我从在线工具中检查正则表达式时,它会选择我想要的正确字符串。必须是pos

我想提取

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查询中的问题

请提供帮助。

尝试以下查询:

SELECT regexp_matches(
  'class 1 type 1 cat 1 002267b4-ad06-11e4-89ca-59f94b49bbc0',
  '[^-]{1,8}-[^-]{1,4}-[^-]{1,4}-[^-]{1,4}-[^-]{1,12}'
);
这可以是

尝试以下查询:

SELECT regexp_matches(
  'class 1 type 1 cat 1 002267b4-ad06-11e4-89ca-59f94b49bbc0',
  '[^-]{1,8}-[^-]{1,4}-[^-]{1,4}-[^-]{1,4}-[^-]{1,12}'
);
这可以是

尝试以下查询:

SELECT regexp_matches(
  'class 1 type 1 cat 1 002267b4-ad06-11e4-89ca-59f94b49bbc0',
  '[^-]{1,8}-[^-]{1,4}-[^-]{1,4}-[^-]{1,4}-[^-]{1,12}'
);
这可以是

尝试以下查询:

SELECT regexp_matches(
  'class 1 type 1 cat 1 002267b4-ad06-11e4-89ca-59f94b49bbc0',
  '[^-]{1,8}-[^-]{1,4}-[^-]{1,4}-[^-]{1,4}-[^-]{1,12}'
);
这可以是根据,您需要使用
\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' )
根据,您需要使用
\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' )
根据,您需要使用
\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' )
根据,您需要使用
\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' )

将模式放在
()
\b
是a-我认为这不是您想要的。我也不认为您需要在范围操作符(
[…]
)之外转义
-
)。我认为
'\w{1,8}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,12}
应该做它的
[[::]
而不是第一个和最后一个
\b
。请参阅。@hjpotter92但posgres说没有括号好,第一个
\b
试试
\m
,最后一个
\b
\m\w{1,8}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,12}\m
\b
表示postgresql正则表达式风格中的退格。将模式放在
()
\b
中是a-我认为这不是您想要的。我也不认为您需要在范围操作符(
[…]
)之外转义
-
)。我认为
'\w{1,8}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,12}
应该做它的
[[::]
而不是第一个和最后一个
\b
。请参阅。@hjpotter92但posgres说没有括号好,第一个
\b
试试
\m
,最后一个
\b
\m\w{1,8}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,12}\m
\b
表示postgresql正则表达式风格中的退格。将模式放在
()
\b
中是a-我认为这不是您想要的。我也不认为您需要在范围操作符(
[…]
)之外转义
-
)。我认为
'\w{1,8}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,12}
应该做它的
[[::]
而不是第一个和最后一个
\b
。请参阅。@hjpotter92但posgres说没有括号好,第一个
\b
试试
\m
,最后一个
\b
\m\w{1,8}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,12}\m
\b
表示postgresql正则表达式风格中的退格。将模式放在
()
\b
中是a-我认为这不是您想要的。我也不认为您需要在范围操作符(
[…]
)之外转义
-
)。我认为
'\w{1,8}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,12}
应该做它的
[[::]
而不是第一个和最后一个
\b
。请参阅。@hjpotter92但posgres说没有括号好,第一个
\b
试试
\m
,最后一个
\b
\m\w{1,8}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,4}-\w{1,12}\m
\b
表示postgresql正则表达式中的退格。