作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试了一段时间,匹配一个句子的最后一个字:
select regexp_matches('My name is Harry Potter', '[^ ]+$');
返回 {Potter}
尝试匹配最后两个词:
select regexp_matches('My name is Harry Potter', '[^ ]\s+[^ ]+$');
失败了。
select regexp_matches('My name is Harry Potter', '(.*?)\s+(.*?)$');
也没有按预期措辞。
有什么见解吗?
最佳答案
与其使用返回匹配数组的 REGEXP_MATCHES
,不如使用 SUBSTRING
更好,它将以 TEXT
的形式给出匹配直接。
使用正确的模式,正如@Abelisto 分享的那样,您可以这样做:
SELECT SUBSTRING('My name is Harry Potter' FROM '\w+\W+\w+$')
这将返回 Harry Potter
而不是 {"Harry Potter"}
根据@Hambone 的评论,如果末尾的任何一个单词包含标点符号,如撇号,您需要考虑使用以下模式:
SELECT SUBSTRING('My name is Danny O''neal' FROM '\S+\s+\S+$')
上面的代码会正确返回 Danny O'neal
而不仅仅是 O'neal
关于regex - 如何在 PostgreSQL 中匹配句子中的最后两个单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38754634/
我是一名优秀的程序员,十分优秀!