regex - 如何在 PostgreSQL 中使用正则表达式每 2 个字符放一个点?

标签 regex postgresql

如何使用 regexp_replace 函数通过每两个字符放置一个点来替换字符串?

例如:

1 => 1

12 => 12

123 => 12.3

1234 => 12.34

12345 => 12.34.5

123456 => 12.34.56

...等等。

我尝试了一些可能性,但我没有成功。

最佳答案

全局匹配 (.{2})(?!$) 并将其替换为 $1.

(?!$) 部分是一个否定的预测,防止最后两个数字匹配。它避免了 12.34 成为 12.34.

test=> select regexp_replace('12345678', '(.{2})(?!$)', '\1.', 'g');
 regexp_replace 
----------------
 12.34.56.78

Demo

关于regex - 如何在 PostgreSQL 中使用正则表达式每 2 个字符放一个点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53889293/

相关文章:

sql - Postgres 比较字符串与数字返回正确的结果

ios - 接受电子邮件地址和 10 位电话号码的正则表达式

javascript - 如何编写正则表达式来将 XML 节点与大型文本流中的特定文本进行匹配

python - 找不到正确的正则表达式语法来匹配换行符或字符串结尾

php - 尝试将正则表达式匹配传递给函数时出错

javascript - knexjs 和 postgres : whereRaw within a join

javascript - 使用 RegExp 匹配多个实例并存储值 (JavaScript)

postgresql - 我如何删除postgis中的重叠线

postgresql - 具有多列的 Postgres 全文搜索,为什么在索引中而不是在运行时连接?

ruby-on-rails - 无法在 Rails 中使用 ActiveRecord 和 PostgreSQL 从每个组中选择不同的行