我正在使用Postgres,并希望在最后一次出现之后删除所有内容 - ' - '或者' |'。这是我提出的问题:
select regexp_replace( title, E'(- |\\|).+$', '') as title from articles
问题是如下字符串:
'Trump tweets in China - how, and why does it matter? - BBC News'
过早被截断:
'Trump tweets in China'
如何才能在最后一次出现' - '?
后删除后缀谢谢!
答案 0 :(得分:1)
你可以试试这个:
select regexp_replace ('Trump tweets in China - how, and why does it matter? - BBC News',
'[|-][^|-]*$', '')
它基本上说:
|
或-
|
和-
的任意数量的字符结果:
Trump tweets in China - how, and why does it matter?
答案 1 :(得分:1)
您可以匹配空格和连字符或管道符号,捕获它们,然后只匹配不等于捕获文本的其余字符串:
(- |\|)(?:(?!\1).)+$
替换为\1
。必要时逃脱(您需要在E'...'
字符串中使用双重转义)。
<强>详情
(- |\|)
- -
或|
符号(?:(?!\1).)+
- 任何字符.
),1次或多次出现(+
),不会启动-
序列或不等于{{1} } - 取决于捕获到第1组的内容。|
- 字符串结束。请参阅regex demo。