我的字符串是prefvalue:CEROTG
,我想匹配prefvalue:
,但我想只打印CEROTG
Regex为prefvalue:(S+)
,但我不确定这个值来自哪里。如果它存储在列(单元格(中,这在很大程度上取决于您使用的RDBMS。有些查询不支持regex。
图案说明:
prefvalue:
-与prefvalue:
完全匹配
(...)
-捕获组
S+
-匹配除空白之外的任意字符中的一个或多个
要从模式返回您需要的内容,只需参考1
的第一个捕获组
演示
编辑
此外,您可以添加边界,以确保您希望将其匹配为某个较长字符串的子字符串:^prefvalue:(S+)$
^
-匹配字符串的开头
$
-匹配字符串末尾
SQL fiddle演示
您不需要正则表达式。您可以使用简单的字符串函数:
SELECT SUBSTR( your_column, 11 ) AS prefvalue
FROM table_name
WHERE your_column LIKE 'prefvalue:%';
如果你有一些测试数据:
CREATE TABLE table_name ( your_column ) AS
SELECT 'prefvalue:CEROTG' FROM DUAL UNION ALL
SELECT 'prefvalue:ABCD' FROM DUAL UNION ALL
SELECT 'othervalue:NOTTHIS' FROM DUAL;
则输出为:
|PREVALUE||:--------||CEROTG||ABCD|
,如果您只想要CEROTG
行:
SELECT SUBSTR( your_column, 11 ) AS prefvalue
FROM table_name
WHERE your_column = 'prefvalue:CEROTG';
输出:
|PREVALUE||:--------||CEROTG|
db<gt;小提琴这里