首页 > 解决方案 > 匹配一行中的第 n 个单词

问题描述

在我使用的应用程序中,我无法选择匹配组 1。

我可以使用的结果是来自正则表达式的完全匹配。

但我需要第 5 个单词“jumps”作为匹配结果,而不是完整匹配“The quick brown fox jumps”

^(?:[^ ]*\ ){4}([^ ]*)

The quick brown fox jumps over the lazy dog

这是一个链接https://regex101.com/r/nB9yD9/6

标签: regexfindword

解决方案


由于您需要整个匹配仅是第 n 个单词,因此您可以尝试使用“positive lookbehind”,它允许您仅匹配某些内容,如果它前面有其他内容。

要仅匹配第五个单词,您需要匹配前面有四个单词的第一个单词。

匹配四个单词(即单词字符后跟一个空格字符):

(\w+\s){4}

匹配单个单词,但前提是它前面有四个其他单词:

(?<=(\w+\s){4})(\w+)

在此处测试结果https://regex101.com/r/QIPEkm/1


推荐阅读