Autor | Zpráva | ||
---|---|---|---|
Jan Doležal Profil |
Učím se reguláry a snažím se zapsat toto:
Najdu v textu množinové závorky, kde mezi nimi je U nebo u. /\{.*(U+).*\}/i Nedá se to zapsat i lepé? |
||
lionel messi Profil |
#2 · Zasláno: 2. 10. 2014, 18:20:42
Jan Doležal:
Nie som žiadny profík, takže moja odpoveď možno nebude 100%. 1. Zásadnú chybu ohrozujúcu funkčnosť tam nevidím. 2. Nemyslím si, že by sa s týmto zápisom dali robiť nejaké veľké kúzla (ale názor odborníkov sa môže líšiť). 3. Malý postreh: pre napr. {buu} ti to do spätnej referencie uloží len u , nie uu , neviem, či je to žiaduce.
|
||
Jan Doležal Profil |
#3 · Zasláno: 2. 10. 2014, 18:23:43
3. To je OK. Jedná se o filtraci "tagů", zda to daný symbol obsahuje.
|
||
Tori Profil |
#4 · Zasláno: 2. 10. 2014, 19:11:51
Filtrace znamená, že kontrolujete tagy po jednom (= řetězce
{něco} ), anebo procházíte celou skupinu tagů naráz (= {asd} {u} {foo} )? Pokud to druhé, tak místo .*(U+).* použijte [^}]*(U+)[^{]* , ať to nebere několik tagů naráz. Jinak pro takhle triviální hledání ascii podřetězce je efektivnější stripos, ale asi vám jde spíš o trénink s reguláry.
|
||
Jan Doležal Profil |
#5 · Zasláno: 3. 10. 2014, 09:47:52
Funckci stripos znám, ale ta použít nejde. Tagy se zapisují tak, že se udělá {} a do nich se píše písmenko (tag). Takže {TUV}, {UTV}, {TVU} ......
|
||
Jan Tvrdík Profil |
#6 · Zasláno: 3. 10. 2014, 11:20:03
Jan Doležal:
Hádám, že lépe to bude takto: /\{.*?U.*?\}/i , tj. ungreedy a bez zbytečné repetice
|
||
Joker Profil |
Pro zamýšlené použití by asi mezi závorkami nemělo být povolené cokoliv, protože mezi „cokoliv“ patří i uzavírací složená závorka.
Ta by měla být zakázaná, tj. [^\}] místo tečky.
Možná by měla být zakázaná i otevírací závorka. Například tím regulárem projde {foo} u {foo} . Edit: Pro lepší pochopení jsem zvýraznil část, která podle toho reguláru odpovídá „vnitřku závorek“
To co posílal Jan Tvrdík je lepší, ale stejně to není proti uvedenému problému odolné. |
||
Jan Doležal Profil |
Moc díky za pomoc. Už se tu stím nějak poperu. ;)
|
||
Časová prodleva: 9 let
|
0