Помогите с регуляркой

D
На сайте с 28.06.2008
Offline
977
219

Есть два варианта данных:

страна-%

и просто страна

не получается их захватить + я еще хочу и процент с тире в отдельный элемент вынести

https://regex101.com/r/ZhPUp2/1

---------- Добавлено 31.03.2020 в 10:19 ----------

Вот так работает как мне надо, но только не цепляет пустые страны без процента

^(.*)(-(\d{2}%))



---------- Добавлено 31.03.2020 в 10:21 ----------

ппц. магия серча...

вроде придумал

^(.*)(-(\d{2}%))|^(.*)$
ArbNet
На сайте с 27.10.2019
Offline
48
#1
Блажен, кто не стремится сделать лучше: он не рискует быть не понятым.
D
На сайте с 28.06.2008
Offline
977
#2

Вы не поняли - пустые страны мне тоже нужны, но я уже придумал спс

ArbNet
На сайте с 27.10.2019
Offline
48
#3

Dram, там не показывает захват цифр с процентами если делаешь так чтобы страны с числами и процентами группы захвата показывало

например:

^(.*)(-\d+%)? или так ^(.*)-?(\d+%)? или ещё так ^(.*)-?(\d+)?%?

в PHP и др. языках в матч должны быть группы захвата :)

IL
На сайте с 20.04.2007
Offline
412
#4
Dram:
^(.*)(-(\d{2}%))|^(.*)$

Dram, проверьте, что случится на <10%

^(.*)-?(\d+%)?$
S
На сайте с 30.09.2016
Offline
459
#5
ivan-lev:
d+

Ну 146% тоже не будет. 🙄

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
IL
На сайте с 20.04.2007
Offline
412
#6
Sitealert:
Ну 146% тоже не будет.

Перелогиньтесь, господин Ч*ров!.. 😂

* Как минимум (или, скорее как максимум), 100 вполне может быть.. ;)

Если занудствовать, можно ограничить {1,3}

Если ещё сильнее - то (\d{1,2}|100)

Но вопрос проверки корректности изначальных данных не стОит, а посыл был про некорректную обработку в регулярке ТС-а для некоторых корректных данных

IL
На сайте с 20.04.2007
Offline
412
#7
ivan-lev:
^(.*)-?(\d+%)?$

Да, в модификаторах не забыть Ungreedy gmU

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий