Существует ли краткий способ сопоставления конкретной заглавной буквы (и различного количества пробелов перед и между символами) ровно три раза - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь сопоставить определенный символ три раза. Между персонажем будут пробелы. Суть в том, что я не знаю персонажа, которому нужно соответствовать заранее.

Например:

   D       D                D     Would be a match
   D       D                B     Would not be a match (because of the B)
   A        A             A       Would be a match
   D       D      j        D      Would not be a match (because of the j)

Я думал, что смогу позволить первому совпадению определить второе и третье совпадение, но я не знал, как это сделать.

Regex101 - совпадение трех Bs

(?:\s*)([B]){1}(?:\s*)([\1])(?:\s*)([\1]){1}   

В конечном итоге я хочу использовать регулярное выражение в R-программе.

1 Ответ

2 голосов
/ 01 ноября 2019

Вы можете сопоставить 1+ раз табуляцию или пробел, используя класс символов и одну группу захвата с обратной ссылкой \1, не используя его в классе символов.

\b([A-Z])[ \t]+\1[ \t]+\1\b
  • \b Граница слова
  • ([A-Z]) Захват группа 1 Соответствует символу в верхнем регистре AZ
  • [ \t]+\1 Соответствует 1+ раз пробелу или табуляции иобратная ссылка на группу 1
  • [ \t]+\1 То же, что и выше
  • \b Граница слова

Regex demo

Вы также можете использовать \s вместо пробела или табуляции, но также можете совпадать с новой строкой

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