Совпадение всех вхождений определенного символа внутри каждого слова, которому предшествует определенное слово и которое не разделено пробелом - PullRequest
1 голос
/ 27 апреля 2020

Учитывая строку, такую ​​как ниже:

word.hi. л. word.

Я хочу создать регулярное выражение, которое будет соответствовать всем ".", которым предшествует "word", и любому другому непробельному символу

. Итак, в приведенном выше примере я хотел бы первая, вторая и последняя точки для сопоставления.

Хотя сопоставление первой и последней точек будет легко с глобальным флагом (/(?:word.*)\K./gU), я не уверен как построить регулярное выражение, которое также соответствует второй точке.

Оцените любые указатели.

1 Ответ

1 голос
/ 27 апреля 2020

Вы можете сопоставить слово , а затем получить все последовательные совпадения с помощью якоря \G, за исключением совпадающих пробельных символов или точки.

(?:\bword|\G(?!\A))[^.\s]*\K\.

По частям

  • (?: Группа без захвата
    • \bword Соответствие word, которому предшествует граница слова
    • | Или
    • \G(?!\A) Утверждение позиции в конец предыдущего матча, а не в начале
  • ) Закрыть группу без захвата
  • [^.\s]* Матч 0+ вхождений любого символа, кроме . или символ пробела
  • \K Очистить буфер совпадений (забудьте, что сопоставляется до сих пор)
  • \. Совпадение с точкой

Regex демо

...