首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有两个名称的正则表达式:一个带有中首字母,另一个没有

有两个名称的正则表达式:一个带有中首字母,另一个没有
EN

Stack Overflow用户
提问于 2022-09-14 16:28:26
回答 2查看 54关注 0票数 0

我试图使用regex (https://regex101.com)来识别这个字符串中的名称。

示例案文:

代码语言:javascript
复制
Elon R. Musk (245)436-7956 Jeff Bezos (235)231-3432

到目前为止,我所尝试的似乎只适用于没有中间首字母的名称:

代码语言:javascript
复制
([A-Z]{1}[a-z]+) ([A-Z]{1}[a-z]+)

注意:电话号码是随机击键。请不要试着给他们打电话。

下面是一个使用的python代码示例:

代码语言:javascript
复制
import re
strr = 'Elon R. Musk (245)436-7956 Jeff Bezos (235)231-3432'

def gimmethenamesdammit(strr):
    regex = re.compile("([A-Z]{1}[a-z]+) ([A-Z]{1}[a-z]+)")
    print(regex.findall(strr))

gimmethenamesdammit(strr)

总之,请修改上面的正则表达式,突出显示名称Elon R. MuskJeff Bezos

运行gimmethenamesdammit(strr)时所需的python输出

代码语言:javascript
复制
gimmethenamesdammit(strr)

[('Elon', 'R.', 'Musk'), ('Jeff', 'Bezos')]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-17 05:56:56

以下regex表达式解决了这个问题:

代码语言:javascript
复制
import re

strr = 'Elon R. Musk (245)436-7956 Jeff Bezos (235)231-3432'

regex = r"[A-Z]\w+\s[A-Z]?\w+"

POCs = re.findall(regex, strr)

f"{POCs[0]}, {POCs[-1]}"
票数 0
EN

Stack Overflow用户

发布于 2022-09-14 17:06:45

试试这个:\b([^\s*][a-zA-Z_\.\s]+)\b

演示:https://regex101.com/r/7ul1pQ/1

  1. \b...\b -- 字界
  2. [^\s*][a-zA-Z_\.\s]+ --带有字母、点和空格的文本
  3. () -- 被俘组
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73720293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档