gpt4 book ai didi

python - 尝试在 Python 中搜索带有 (.*?) 的字符串

转载 作者:太空宇宙 更新时间:2023-11-03 23:57:11 25 4
gpt4 key购买 nike

我刚接触 Python 3 天,我正在尝试使用 findall() 来搜索指定格式后的字符串字符

    >>> nameRegex = re.compile(r'First Name: (.*?) Last Name: (.*?)')
>>> nameRegex.findall('This is my application for the job. First Name:
John Last Name: Johnson DOB 01/01/90')
>>> [('John', '')]

我意识到我正在使用非贪婪?在组中,否则它也会返回字符串的 DOB 部分。

有没有一种方法可以格式化以仅使用 Johnson 字符串部分?

由于我是新手,所以我不确定要移动到哪个方向才能获得所需的字符串部分。

提前感谢任何人。

最佳答案

这个问题已经针对单个单词的姓氏和名字得到了回答,但如果事情变得奇怪,它们将不起作用。以下是处理各种名称的方法(除了包含 "Last Name:" 的名字和包含 "DOB" 的姓氏):

nameRegex = re.compile(r'First Name: (.*?) Last Name: (.*?(?= DOB ))')
nameRegex.findall("This is my application for the job. First Name: Mary Beth Last Name: von Sternberg-O'Leary DOB 01/01/90")

这给出了正确的输出:

[('Mary Beth', "von Sternberg-O'Leary")]

正则表达式中看起来很有趣的部分 (.*?(?= DOB )) 被称为“正面前瞻”。简而言之,这使得该组与 (.*? DOB ) 匹配相同的字符串,但从捕获组中丢弃 "DOB "

Here is an intro to lookarounds ,一旦您熟悉了它们,它们就会非常有用。

关于python - 尝试在 Python 中搜索带有 (.*?) 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57189536/

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