python - 正则表达式在句子中查找名称
问题描述
我有一些类似的句子
1:
“RLB 显示 Oubre Jr. (WAS) 合法地捆绑 Nurkic (POR),并且正确调用了一个持球。”
2:
“努尔基奇 (POR) 保持合法的防守位置,并与沃尔 (WAS) 发生偶然接触,这不会影响他的开球尝试。”
我需要使用 Python 正则表达式来查找名称“Oubre Jr”。“努尔基克”和“努尔基克”、“墙”。
p = r'\s*(\w+?)\s[(]'
使用这种模式,我可以找到“['Nurkic', 'Wall']”,但在第 1 句中,我只能找到 ['Nurkic'],错过了“Oubre Jr”。
谁能帮我?
解决方案
您可以使用以下正则表达式:
(?:[A-Z][a-z][\s\.a-z]*)+(?=\s\()
|-----Main Pattern-----|
详情:
(?:)
- 创建一个非捕获组[A-Z]
- 捕获 1 个大写字母[a-z]
- 捕获 1 个小写字母[\s\.a-z]*
- 捕获空格 (' '
)、句点 ('.'
) 或小写字母 0 次以上(?=\s\()
- 如果主模式后面只有' ('
字符串,则捕获它
str = '''RLB shows Oubre Jr. (WAS) legally ties up Nurkic (POR), and a held ball is correctly called.
Nurkic (POR) maintains legal guarding position and makes incidental contact with Wall (WAS) that does not affect his driving shot attempt.'''
res = re.findall( r'(?:[A-Z][a-z][\s\.a-z]*)+(?=\s\()', str )
print(res)
演示:https ://repl.it/@RahulVerma8/OvalRequiredAdvance?language=python3
推荐阅读
- android - 带有错误 trustAnchors 参数的 Android Studio 4.X.1 必须为非空
- java - 在过滤的 HashMap 上运行 For-each 循环
- node.js - 如何使用 mocha 和 chai 断言验证嵌套响应对象
- python - 使用 DragonFly + WSR 时重新加载语法
- javascript - 支持带有 terser + rollup 的旧浏览器?
- javascript - Discord.js client.on guildMemberAdd 多次触发
- python - 为什么我会收到这个 IsADirectoryError: [Errno 21]?
- javascript - 将图像插入表格
- coq - 结合两个假设并在 Coq 中创建一个新假设
- jquery - 从 API 数组获取 JSON 值