正则表达式:在所选文本的前面加上3个单词,在后面加上3个单词

时间:2019-04-03 08:20:48

标签: regex text google-sheets

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

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

此代码将成功返回所有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

我希望文本的一部分出现,以便接收者能够更容易地确定文本的位置。

非常感谢任何替代方法。

1 个答案:

答案 0 :(得分:2)

您可以使用

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

Google Spreadsheets测试:

enter image description here