python - 尝试在 Python 中搜索带有 (.*?) 的字符串
问题描述
我是 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 "
这是lookarounds的介绍,一旦您熟悉了它们,它们就会非常有用。
推荐阅读
- asp.net-core - 有没有关于没有刷新页面的asp.net core mvc切换路由的解决方案,比如角度路由重用策略
- angular - Angular8 - 通过下拉(选择)值动态关注多个输入
- javascript - 有没有办法保存上传到html页面的文件的路径
- regex - 如何在本机反应中删除字符串之前的每个空格和换行符?
- python - Pandas 按字母顺序对第二个字符的值进行排序
- wordpress - 关于 A/B 测试价格的建议?
- flutter - 用于运行 onnx 模型的颤振插件
- nvidia - 在 Jetson nano 和 jetson xavier 上运行 Nvidia-docker 以实现 tensorflow 等深度学习框架
- git - 在处理其他项目时如何在 vs 代码中关闭终端中的当前 git 存储库
- spartacus-storefront - 如何在斯巴达克斯中自定义核心组件?