Подберите n-е слово в строке - PullRequest
0 голосов
/ 24 января 2019

В приложении, которое я использую, я не могу выбрать группу соответствия 1.

В результате я могу использовать полное совпадение с регулярным выражением.

, но мне нужно 5-е слово "прыжки "как результат матча, а не полный матч" Быстрые коричневые лисы прыгают "

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

The quick brown fox jumps over the lazy dog

Вот ссылка https://regex101.com/r/nB9yD9/6

Ответы [ 3 ]

0 голосов
/ 29 января 2019

Работает https://regex101.com/r/pR22LK/2 с PCRE. Ваше приложение не поддерживает его, но я не знаю, как оно работает. Я думаю, что вы должны извлечь все слова в массиве, а затем выбрать те, которые вы хотите. - Всего 23 часа назад

Здравствуйте, Toto, ваше решение работает и в приложении, как PCRE, спасибо !!! - gsxr1300 только сейчас отредактируйте

0 голосов
/ 29 января 2019

Чтобы найти 3-е слово в предложении, используйте:

^(?:\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

Демонстрация

0 голосов
/ 25 января 2019

Поскольку вам нужно, чтобы все совпадение было только n-м словом, вы можете попытаться использовать «положительный взгляд назад», который позволяет сопоставлять только что-то, если ему предшествует что-то еще.

Чтобы соответствовать только пятому слову, вы хотите сопоставить первое слово, перед которым стоят четыре слова.

Чтобы соответствовать четырем словам (то есть символам слова, за которыми следует пробел):

(\w+\s){4}

Соответствует одному слову, но только если ему предшествуют четыре других слова:

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

Проверьте результат здесь https://regex101.com/r/QIPEkm/1

...