Как найти два последовательных повторяющихся символа в RGB с помощью Regex? - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь найти все номера RGB, которые имеют 2x3 последовательных номера. Под этим я подразумеваю такие цифры:

\#00FF11
\#66AA44
\#FF0000

Я пытался написать это:

\b#(([0-9a-zA-Z])\1){3}\b

но это не работает.

Где проблема? Я бы, наверное, сказал, что проблема где-то около \1, потому что это единственная часть, в которой я не уверен.

1 Ответ

0 голосов
/ 15 января 2019

Шаблон \1 является обратной ссылкой на группу захвата 1, то есть (([0-9a-zA-Z])\1). Вы действительно хотите сослаться на группу захвата 2 и, следовательно, вам нужно \2 вместо \1.

Обратите внимание, что \b# будет соответствовать только #, которому предшествует слово char (буква, цифра или _). Вам нужно использовать границу без слов в начале, \B.

Для сопоставления шестнадцатеричных символов предпочтительнее использовать [A-Fa-f], а не [A-Za-z].

Используйте

@"\B#(?:([0-9a-fA-F])\1){3}\b"

Используя буквальный строковый литерал, вам не нужно дважды использовать двойные обратные слеши здесь.

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