正则表达式:在所选文本前面包含 3 个单词,在后面包含 3 个单词

标签 regex text google-sheets

我在 Excel 中使用此正则表达式代码来查找段落中所需的文本:

=RegexExtract(B2,"(bot|vehicle|scrape)")

如果在段落中找到所有 3 个单词,此代码将成功返回所有 3 个单词,我想做的额外操作是让正则表达式以粗体返回所需的文本以及前面的几个单词和 3 个单词在所选单词的后面。

文本示例:

A car (or automobile) is a wheeled motor vehicle used for transportation. 
Most definitions of car say they run primarily on roads, seat one to eight people,
have four tires, and mainly transport people rather than goods.

示例输出:

a wheeled motor **vehicle** used for transportation

我希望显示一部分文本,以便接收者能够更轻松地查明文本的位置。

非常感谢任何替代方法。

最佳答案

您可以使用

=RegexExtract(B2,"(?:\w+\W+(?:\w+\W+){0,2})?(?:bot|vehicle|scrape)(?:\W+\w+(?:\W+\w+){0,2})?")

请参阅regex demoRegulex graph :

enter image description here

详细信息:该模式用捕获括号括起来,以使 REGEXEXTRACT 实际提取满足以下模式的所需字符串:

  • (?:\w+\W+(?:\w+\W+){0,2})? - 可选的单词序列,后跟非单词字符,后跟零,一到两次重复 1+ 个单词字符,然后重复 1+ 个非单词字符
  • (?:bot|vehicle|scrape) - botvehiclescrape 单词 <
  • (?:\W+\w+(?:\W+\w+){0,2})? - 1+ 个非单词字符的可选序列,然后是 1+ 个单词字符零次、一次或两次重复 1+ 个非单词字符,然后重复 1+ 个单词字符。

Google 电子表格测试:

enter image description here

关于正则表达式:在所选文本前面包含 3 个单词,在后面包含 3 个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55490328/

相关文章:

regex - Unix 文件处理删除垃圾字符

c++ - 从菜单退出游戏不起作用

Python,在列中拆分多个字符串

google-sheets - 计算电子表格中每个单元格时间范围的每日总时间

regex - R vs sed 正则表达式贪婪

python - REGEX 提取部分链接

java - Scanner.hasNext(模式模式)未按预期工作

java - 如何有效地搜索字符串

google-sheets - 添加新行时,Google 表格条件格式会发生变化

google-sheets - SUMIF 不带删除线