Подберите слова, начинающиеся с определенной буквы, а затем содержащие 5 или более непробельных символов - PullRequest
1 голос
/ 20 апреля 2020

Я попробовал следующее регулярное выражение.

  • (?i)(^t|^d|^i|)\S{5}.* - соответствует любой строке независимо от начального символа.
  • (?i)^(t|d|i|)\S{5}.* - соответствует только той строке, которая начинается с char "t"
  • (?i)[tdi]\S{5}.* - Это выглядит хорошо, но не может использовать ^, поскольку это просто отрицает. Если я использую ^ внутри (?i)[^tdi]\S{5}.*, то оно соответствует всему, кроме того, которое начинается с t. Я хочу сопоставить txxxxx, но не xtxxxx, и то же самое относится к i и d.

Какое правильное регулярное выражение для его достижения?

Сначала , строка должна начинаться с одного из указанных символов, а затем должна следовать не менее 5 символов (без пробелов), а затем она может иметь что-либо позади, то есть txxxxx.domain.local, dxxxxx.domain.local, но в то же время она не должна совпадать с xtxxxx.domain.local или xdxxxx.domain.local.

1 Ответ

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

Как правило, если вам нужно сопоставить любое слово, состоящее из букв, цифр или символов подчеркивания, начиная с указанной c буквы, которую вы можете использовать

(?i)\b[tdi]\w*

Это будет соответствовать t, T, d, D, I или i на границе слова (\b), а затем любые 0 или более букв, цифр или подчеркиваний.

Вы можете использовать

(?i)(?<!\S)[tdi]\S{5,}

См. Демонстрационную версию regex

  • (?i) - модификатор без учета регистра для
  • (?<!\S) - пробел должен быть расположен перед матчем
  • [tdi] - одна из трех букв, с которых должно начинаться слово
  • \S{5,} - пять или более непробельных символов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...