Границы слов подстроки с регулярным выражением

#javascript #regex #word

#javascript #регулярное выражение #word

Вопрос:

Я на 99% использую регулярное выражение для поиска слов, но не какие-либо итерации того, где это встречается в качестве подстроки.

т.е. Ищете джем или ВАРЕНЬЕ, но не джемПа или джем флоро

Это то, что у меня есть до сих пор:

 bjams?d?b
  

Это работает со всеми комбинациями, с которыми я, вероятно, столкнусь, за исключением того, что я хотел бы, чтобы он также выполнял несколько итераций одной и той же строки без пробелов

 jamjamjamjam
  

Могу ли я добавить это в регулярное выражение?

Комментарии:

1. Попробуйте: b(?:jamh*d*) b

2. @anubhava не работает regex101.com/r/C05fsI/1

3. У меня сложилось впечатление, что OP хочет соответствовать jamjamjamjam

4. @anubhava а? Я был почти уверен, что он имел в виду, что не хотел их сопоставлять. Возможно, вы правы.

5. @IslamElshobokshy — Извините, это была моя неправильная формулировка. Я намного лучше разбираюсь в картинках 🙂

Ответ №1:

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

 ~b(?:(?:jam) |jamh*d*)b~i
  

Демонстрация регулярных выражений

Подробности регулярного выражения:

  • b : Граница слова
  • (?:(?:jam) |jamh*d*) : Сопоставьте 1 соседние jam строки или jam , за которыми следует 0 пробелов и 0 цифр
  • b : Граница слова
  • i : режим для игнорирования регистра

Ответ №2:

Вы могли бы попробовать что-то вроде этого :

 b(?:jam|JAM) b
  

https://regex101.com/r/C05fsI/4