匹配第n个单词

时间:2019-01-24 16:19:32

标签: regex find word

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

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

但是我需要第5个单词“ jumps”作为比赛结果,而不是完整的比赛“ the quick brown fox jumps”

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

The quick brown fox jumps over the lazy dog

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

4 个答案:

答案 0 :(得分:0)

由于您需要整个匹配项仅是第n个字,因此您可以尝试使用“正向后看”,它允许您仅匹配某些内容(如果在其他内容之前)。

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

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

(\w+\s){4}

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

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

https://regex101.com/r/QIPEkm/1

处测试结果

答案 1 :(得分:0)

它与https://regex101.com/r/pR22LK/2一起可用于PCRE。您的应用似乎不支持它,但我不知道它是如何工作的。我认为您必须提取数组中的所有单词,然后选择所需的单词。 – Toto 23小时前

Hello Toto,您的解决方案也可以在应用程序中使用,就像PCRE一样,谢谢!!! – gsxr1300刚编辑

答案 2 :(得分:0)

要找到句子的第三个单词,请使用:

^(?:\w+ ){2}\K\w+

说明:

^               # beginning of line
    (?:         # start non capture group
        \w+     # 1 or more word character
                # a space
    ){2}        # group must appear twice (change {2} in {3} to get the 4th word and so on)
    \K          # forget all we have seen until this position
    \w+         # 1 or more word character

Demo

答案 3 :(得分:0)

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

^(\w+\s){4}

匹配一个词,但前提是它前面有“第一个”四个其他词:

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

注意 ^ 差异

如果你想知道这个“?<=”是什么意思,看看这个: https://stackoverflow.com/a/2973495/11280142

相关问题