我有一张用点分隔的字符串条目的表。
“学校,家长,孩子-1.petA”
“学校,家长,孩子-1.petB”
“school.parent.child-1.petB.name”
“学校,家长,孩子-1”
“学校,家长,孩子-2”
现在我想用Regex获取条目4和5,而不是1、2或3,使用信息“school.parent”
(“其中str~*'…'”是必需的)
我试过的:

SELECT * FROM table WHERE str ~* 'school.parent.\w*$'
SELECT * FROM table WHERE str ~* 'school.parent.*\.'
SELECT * FROM table WHERE str ~* 'school.parent.+?(?=\.)'

最近的是“学校。家长”。+?(?=)'给了我1,2,3但不是4,5(相反)
条目只是示例…可以是任何“string.string.string…”

最佳答案

下面是一个使用like的非常简单的方法:

where str like 'school.parent.%' and
      str not like 'school.parent.%.%'

如果需要正则表达式:
where str ~ '^school.parent.[^.]+$'

根据您的样本数据,似乎不需要区分大小写。

关于sql - PostgreSQL正则表达式:直到点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46098809/

10-16 20:19