для меня это потому, что раньше я запускал скрипт, который устанавливал прокси (для скрипача), снова открывал консоль или перезагружал исправление проблемы.
Прежде всего, ваше регулярное выражение содержит unquantified \d
и соответствует только одиночным цифрам. Вам нужно добавить +
после \d
, чтобы соответствовать 1 или более цифрам.
Чтобы избежать дублирования значений, вы можете использовать
^(?!.*\b(\d+)\b.*\b\1\b)\d+(?:,\d+)*$
^^^^^^^^^^^^^^^^^^^^^^^
См. Регулярное выражение demo
(?!.*\b(\d+)\b.*\b\1\b)
- это отрицательный результат, который не даст совпадения, если после любых символов 0+, кроме символов разрыва строки, есть группа цифр, которые появляются позже в строке ( после других символов 0+, кроме символов разрыва строки).
Подробности
^
- начало строки (?!.*\b(\d+)\b.*\b\1\b)
- a отрицательный результат, который не соответствует совпадению, если идентичные значения появляются в тексте \d+
- 1 + цифры (?:,\d+)*
- ноль или более вхождений ,
- запятая \d+
- 1 + цифры $
- конец строки.
(\d++)(?!(,\1))
соответствует 1 + цифрам, которые не сопровождаются,
и этой строкой цифр. – Wiktor Stribiżew 16 July 2018 в 11:13^(?!.*\b(\d+)\b.*\b\1\b)([1-9]\d*|0)(?:,[1-9]\d*|,0)*$
- хороший шаблон, и для этого требуется больше шагов, чем у меня, потому что есть группы чередования. Чередование внутри конструкций группировки всегда поглощает некоторые дополнительные вычислительные мощности. Однако, поскольку шаблоны соответствуют различным строкам, вы не должны сравнивать их производительность. Знаете, мы сравниваем яблоки с яблоками. – Wiktor Stribiżew 17 July 2018 в 11:44