

Java, prosím o opravení regexu.
Dobrý den, již dříve jsem zde dával téma s regexem, dneska se na vás obracím znovu, jelikož regex nejsem schopný pochopit, budu potřebovat vaší pomoc :)
Toto jsou následující patterny které potřebuji opravit.
public Pattern ipPattern = Pattern.compile("([01]?\\d\\d?|2[0-4]\\d|25[0-5])[.,:!\\-]([01]?\\d\\d?|2[0-4]\\d|25[0-5])[.,:!\\-]([01]?\\d\\d?|2[0-4]\\d|25[0-5])[.,:!\\-]([01]?\\d\\d?|2[0-4]\\d|25[0-5])");
public Pattern webpattern = Pattern.compile("(http://)|(https://)?(www)?\\S{2,}((\\.com)|(\\.net)|(\\.org)|(\\.co)|(\\.uk)|(\\.tk)|(\\.info)|(\\.es)|(\\.de)|(\\.arpa)|(\\.edu)|(\\.firm)|(\\.int)|(\\.mil)|(\\.mobi)|(\\.nato)|(\\.to)|(\\.fr)|(\\.ms)|(\\.vu)|(\\.eu)|(\\.nl)|(\\.us)|(\\.dk))|(\\.cz)|(\\.sk)|(\\.bis)");
Problém je v tom že to bere i například takovéhle zprávy,
xxxxx - pls nemozes od 18:00-20:00
Půjde tento pattern nějak vylepšit ?
Kdyz chces neco opravit, uved taky priklad, co by to melo vybirat. Ten druhy vybira URL adresy, takze urcite nevybere ten tvuj radek.
Jsou tu 2 patterny, jedná se spíše o ipPattern.
Má hlídat IP adresy př.:
95.90.299.120:26457
a né text ve stylu '18:00-20:00'
[.,:!\\-]
znamena ze tam moze byt akykolvek z uvedenych znakov, takze . alebo , alebo : alebo ! alebo \ alebo -
Tazke logickcy ten tvoj vyraz bude generovat match aj ked tam napises 12:20-13:30
Ked chces aby bol match len vtedy ak tam je na tych konkretnych miestach vo vyraze . tak to [.,:!\\-] zmenis na .
Mas to vo vyraze na 3 miestach medzi vyrazmi pre cisla 0-255, takze tym vyrazom testujes len adresu t.j. cislo.cislo.cislo.cislo akonahle nastane nieco take tak mas match. Ale bez dvojbodky a portu za tym, to tam vo vyraze nemas.
Takže přídáním '[.,:!\\-]\\d' to vyřeším zdali to chápu dobře, vůbec mě to nenapadlo

Svata matko musis si najprv ujasnit CO chces mat ako match (ktore pripady). Od toho sa odvija jaky bude regex. Ked chces mat match aj u zapisu sposobom 192-168-1-0 tak si tam nechaj ten - v tych hranatych zatvorkach apod, ked chces mat match len u zapisu s bodkami 192.168.1.0 tak jasne som ti napisal co mas zmenit na bodku.
pretoze ten tvoj regex bude robit match aj napr u zapisu 1-2-3-4, alebo u dalsich trilion moznych zapisov ktore nie su IP ale nejake datumy alebo vysledky zapasov alebo tipovacie moznosti u sportky alebo co :)
P.S> zabudol som ak chces pisat . mimo [] tak musis dat pred nu \
Pokud to ma byt IP adresa, pak by to melo jit i jednoduseji:
(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,4}|\d{1, 3}\.\d{1,3}\.\d{1,3}\.\d{1,3})
vyraz obsahuje 2 pripady: IP s portem + IP bez portu
Dalo by se to napsat i se zpetnymi odkazy, ale takto je to citelnejsi
on to ma lepsie ptz testuje maximalne 255. Tvoj by bol match aj pri 999.999.999.999
Děkuji, toto můj případ vyřešilo. :) Zvláštní je že můj táta se jmenuje taky 'Jan Fiala', no nic přeji hezký zbytek dne :)
No, zkoušel jsem to pouze přes online matcher.
v Java dostávám error:
Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ ) onChat.java
Upravil jsem váš regex na :
Už to bude skoro to co potřebuji.
Tak jsem zjistil že \ se bere jako Escape character, tudiž jsem to nahradil za \\ a všechno funguje jak má.