在我使用的应用中,我无法选择匹配的组1。
我可以使用的结果是正则表达式的完全匹配。
但是我需要第5个单词“ jumps”作为比赛结果,而不是完整的比赛“ the quick brown fox jumps”
^(?:[^ ]*\ ){4}([^ ]*)
The quick brown fox jumps over the lazy dog
答案 0 :(得分:0)
由于您需要整个匹配项仅是第n个字,因此您可以尝试使用“正向后看”,它允许您仅匹配某些内容(如果在其他内容之前)。
要仅匹配第五个单词,您要匹配前面有四个单词的第一个单词。
匹配四个单词(即单词字符后跟一个空格字符):
(\w+\s){4}
匹配单个单词,但前提是该单词后面带有其他四个单词:
(?<=(\w+\s){4})(\w+)
处测试结果
答案 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
答案 3 :(得分:0)
要匹配“第一个”四个单词(即单词字符后跟一个空格字符):
^(\w+\s){4}
匹配一个词,但前提是它前面有“第一个”四个其他词:
(?<=^(\w+\s){4})(\w+)
注意 ^ 差异
如果你想知道这个“?<=”是什么意思,看看这个: https://stackoverflow.com/a/2973495/11280142