gpt4 book ai didi

用于搜索子字符串的 Python 正则表达式

转载 作者:行者123 更新时间:2023-12-04 08:30:12 25 4
gpt4 key购买 nike

我正在尝试从 python3 中的长字符串中提取子字符串

def get_data(text):
initials = text.split()[1]
names = re.search(initials+'(.*)EMP',text).group(1).lstrip().title()

return initials, names
我需要以下输出
x,y = get_data('J JS JOHN SMITH EMP 223456')
JS
John Smith

x,y = get_data('J JB JOE BLOGGS CONT 223456')
JB
Joe Bloggs

x,y = get_data('J JS JOHN SMITH 223456')
JS
John Smith
我可以用 EMP 或 CONT 来做,但我很难用 EMP 或 CONT 或“无”来做
我是正则表达式的新手,因此感谢帮助

最佳答案

无需进行拆分然后搜索。
您可以在 re.findall 中使用单个正则表达式或 re.searchre.match :

^\S+\s+(\S+)\s+(.+?)(?:\s+(?:EMP|CONT))?\s+\d+
RegEx Demo
正则表达式详情:
  • ^ : 开始
  • \S+ : 匹配 1+ 个非空格
  • \s+ : 匹配 1+ 个空格
  • (\S+) : 匹配 1+ 个非空格并在组 #1 中捕获
  • \s+ : 后面必须有 1+ 个空格
  • (.+?) : 匹配 1+ 的任何字符并捕获组 #2
  • (?:\s+(?:EMP|CONT))? : 可选匹配 EMPCONT在 1+ 个空格后
  • \s+\d+ : 后跟 1+ 个空格和 1+ 个数字
  • 关于用于搜索子字符串的 Python 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65064583/

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