Regex, чтобы найти слова, которые содержат эти буквы - PullRequest
0 голосов
/ 19 февраля 2019

Я ищу регулярное выражение, чтобы найти некоторые слова, которые содержат несколько букв.У меня есть слово start, и по регулярному выражению оно должно найти слова, которые содержат (s, два t, a, r), которые имеют по крайней мере 3 буквы.Таким образом, он должен вернуть все эти слова: start, tarts, arts, art.Таким образом, оно должно содержать не менее трех букв и содержать только те символы (s, два t, a, r).

Я пробовал что-то вроде этого:

/(([^s]*s){1})(([^t]*t){2})(([^a]*a){1})([^r]*r){1}/g

Но это регулярное выражение не работает, поскольку требуется, чтобы все было в таком порядке.

Я также пробовал это:

[star]{3,}

Но это соответствует любому количеству символов внутри [], например, оно соответствует sss

Ответы [ 2 ]

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

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

a la:(начало | art | tart | tra | trat | ...)

Определенно не красиво, но это сработает.

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

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

/\b(?!\w*([sar])\w*\1)(?!(?:\w*t){3})[sart]{3,}\b/

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

Подробности RegEx:

  • \b: утверждение границы слова
  • (?!\w*([sar])\w*\1): отрицательный взгляд на утверждение, что у нас не более одного экземпляра [sar] букв
  • (?!(?:\w*t){3}):Отрицательный взгляд на утверждение, у нас не более 2 t букв
  • [sart]{3,}: совпадение 3+ символов, содержащих [sart] символов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...