Oracle 10G 名称正则表达式

发布于 2024-12-19 12:53:10 字数 579 浏览 1 评论 0原文

我正在尝试编写一个 regexp_replace 来为某些员工创建一个“友好”的名字。它们当前存储为 FIRST。最后<可能的后缀> <多个空白> SITE_ID

例如,

JOHN SMITH          ABC
JOHN Q SMITH        ABC
JOHN Q SMITH III    ABC

我正在尝试编写一个正则表达式,以便最终得到:

Smith, John
Smith, John Q
Smith III, John Q

ABC“站点 ID”不需要包含在我的输出中。

这是我尝试过的,但收效甚微:

regexp_replace(
    employee_name, 
    '^(\S+)\s(\S+)\s(\S+)',
             '\3, \1 \2'
)

另外,我正在使用 Oracle 10G。任何帮助将不胜感激!

I am trying to write a regexp_replace to create a "Friendly" name for some employees. They are currently stored as FIRST <POSSIBLE MIDDLE INITIAL> LAST <POSSIBLE SUFFIX> <MULTIPLE WHITESPACE> SITE_ID

For example,

JOHN SMITH          ABC
JOHN Q SMITH        ABC
JOHN Q SMITH III    ABC

I am trying to write a regex so that I will end up with:

Smith, John
Smith, John Q
Smith III, John Q

The ABC "Site ID" doesn't need to be included in my output.

This is what I tried with little success:

regexp_replace(
    employee_name, 
    '^(\S+)\s(\S+)\s(\S+)',
             '\3, \1 \2'
)

Also, I am using Oracle 10G. Any help would be greatly appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦里°也失望 2024-12-26 12:53:10

如果你的名字没有出现 ruakh 指出的问题,即没有单字母名字或姓氏,也没有西班牙裔名字,你可以尝试这个正则表达式:

^(\S+)\s(\S\s)?(\S+)(\s\S+)?\s\s+\S+$

替换应该是:

\3\4, \1\2

If your names don't show the problems ruakh points out, i.e., there aren't single-letter names or surnames, and no Hispanic names, you can try this regexp:

^(\S+)\s(\S\s)?(\S+)(\s\S+)?\s\s+\S+$

The replacement should be:

\3\4, \1\2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文