python - 从特定单词中提取单词直到下一个标点符号[Python Regex]
问题描述
我对编程真的很陌生,我正在努力处理一些正则表达式代码。
我想要做的是从一些特定的单词中提取单词,直到下一个标点符号 ( .
,
?
!
) 我已经设法捕捉到我的特定单词之后的单词,但是通过接下来的 6 个单词。
顺便说一句,我的代码是用 Python 编写的,这里是:
words_to_find = r"(?<=ou est )\w*\s*\w*\s*\w*\s*\w*\s*\w*|" \
r"(?<=ou se trouve )\w*\s*\w*\s*\w*\s*\w*\s*\w*|" \
r"(?<=ou se situe )\w*\s*\w*\s*\w*\s*\w*\s*\w*"
found_words = re.findall(words_to_find, sentence, flags=re.IGNORECASE)
如您所见,我捕捉文字的方式并不是很漂亮。“ou est”、“ou se trouve”和“ou se situe”是我的专用词,用法语说“where is”是不同的方式。
\w*\s
无论如何,为了在下一个标点符号之前捕获单词,替换所有这些“”的最佳方法是什么?还有一件事:我的代码将使用的字符串被我的解析器完全清理,所以不会有任何大写、破折号、撇号或其他任何东西,只有小写字母和它们之间的空格。
解决方案
一种方法是这样的
(?<=ou est )[^,.!?\n]+
这里[^,.!?\n]
代表单词中不允许出现的所有标点符号 to catch。在第一次出现这些字符中的一个之前,您将全部捕获。您可以使用 regex101 对其进行测试:https ://regex101.com/r/PCeySp/1/
另一种方法可能是
(?<=ou est )(\s*\w+)+
在这里,您可以捕获\s*\w+
任意次数。https://regex101.com/r/0lO4u7/1
推荐阅读
- php - 查找分隔符之间的所有匹配项
- git - 不知道如何从终端签出真实代码
- java - 获取资源编号 0x00000002 的值时没有包标识符
- java - ViewModel 观察扩展活动
- javascript - Javascript/Regex:Split() 不适用于我的情况
- google-bigquery - 在 BigQuery 中获取类似 Excel 数据透视表的结果
- android - 为什么即使我更改了 XML 文本,它们的大小也不会更改?
- scala - 使用给定的零件尺寸列表将 Scala 列表拆分为多个零件。[分区]
- javascript - 在窗口调整大小时替换类名
- node.js - 刷新网站时Nodejs自动注销会话