gpt4 book ai didi

regex - 如何将名字拆分为姓氏和首字母

转载 作者:行者123 更新时间:2023-11-29 12:32:38 26 4
gpt4 key购买 nike

我有一个包含“Smith, John Albert”之类名称的 Postgres 表,我需要创建一个名称为“Smith, J A”之类的 View 。 Postgres 有一些 regex implementations我在别处没见过。

到此为止

SELECT regexp_replace('Smith, John Albert', '\Y\w', '', 'g');

返回

S, J A

所以我想我需要找出如何使替换开始部分进入源字符串。

最佳答案

regex used in PostgreSQL实际上是使用 Henry Spencer 编写的软件包实现的。这并不奇怪,它有自己的优势和特点。

与通常的 NFA 正则表达式引擎的区别之一是单词边界。此处,\Y 匹配非单词边界。您需要的其余模式都是众所周知的模式。

因此,您需要使用 '^(\w+)|\Y\w' 模式和 '\1' 替换。

详细信息:

  • ^ - 字符串 anchor 的开始
  • (\w+) - Capturing group 1 个匹配的 1+ 个单词字符(这将被替换模式中的 \1 引用)
  • | - 或者
  • \Y\w - 前面有另一个单词字符的单词字符。

\1 被称为 replacement numbered backreference ,这只是将第 1 组捕获的值放入替换结果中。

关于regex - 如何将名字拆分为姓氏和首字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41958267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com