Получить строку между двумя словами - PullRequest
0 голосов
/ 22 февраля 2019

Этот \[(.*?)\] получает строку между [ и ].Теперь я хочу получить строку между одним словом и другим.Я пробовал \wword1(.*?)\wword2, но безуспешно.Помогите мне, что я делаю не так?

Пример строки:

Движок word1 успешно прошел word2, совпал со словом в нашей строке, пропустив два более ранних вхождения символов iи с.Если бы мы использовали регулярное выражение is, оно совпадало бы с is в This.

Пример вывода: has succesfully

Ответы [ 4 ]

0 голосов
/ 22 февраля 2019

Попробуйте это:

(?<=word1)(stringbetween)(?=word2)
0 голосов
/ 22 февраля 2019

Когда вы добавляете \w к шаблону, он будет соответствовать символу слова, и это ожидаемо.

Что вы можете сделать, это удалить это и сопоставить 1+ раз символ пробела после первого слова иперед вторым словом.

Затем ваш матч в первой группе захвата:

\bword1\s+(.*?)\s+word2\b

Regex demo

Объяснение

  • \b Граница слова
  • word1 Совпадение буквально
  • \s+ Совпадение 1+ раз с символом пробела
  • (.*?)Захват в группе любого символа 0+ раз без жадности
  • \s+ Совпадение 1+ раз с пробельным символом
  • word2 Совпадение буквально
  • \b Граница слова
0 голосов
/ 22 февраля 2019

this [(.?)] получает строку между [ и ].

Нет, нет, должно быть \[[^\]]*\], чтобы получить любую строку между [и]

Решение:

\bword1(.*?)\bword2

\w - это символ слова [A-Za-z)-9] и некоторые другие.\b - это граница слова, то, что вы ищете.Это может быть даже

\bword1\b(.*?)\bword2\b
0 голосов
/ 22 февраля 2019

Вы можете сделать это -

word1 ([a-zA-Z\s]+) word2

ИЛИ

Ваш путь после удаления ненужных \w до и после

word1 (.*?) word2

REGEX: https://regex101.com/r/fsp3FS/20

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...