Как сопоставить единичное вхождение символа после указанного c слова? - PullRequest
0 голосов
/ 15 апреля 2020

Итак, у меня есть что-то вроде: Привет, меня зовут Джек

, и я хочу сопоставить один пробел после слова «имя», но не «это я пытался \s{1}(?!name)» но он по-прежнему соответствует всем пробелам после слова name. Что я тут не так делаю?

1 Ответ

0 голосов
/ 15 апреля 2020

Использование вида сзади, например: (?<=name)\s будет работать очень хорошо.

Если вы используете sh, чтобы использовать прогнозирование, вы можете посмотреть в «is» и использовать положительный прогноз, то есть \s{1}(?=is), который ищет пробел, за которым сразу следует слово is. В этом случае это будет работать, но в более сложном случае это будет соответствовать каждому вхождению этого, что, скорее всего, не тот результат, который вы ищете.

В вашем примере вы ищете единственное вхождение пробела, которое не , за которым следует имя. Если вы используете такой инструмент, как regex101, вы обнаружите, что вы сопоставляете все одиночные вхождения пустого пробела. Если вы используете \s{1}(?!Jack), вы получите все вхождения кроме пробела перед словом Jack. Вот почему ваш пример не работает.

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