[so2] Nu se tine ore in perioada 1-7 mai 2013

Florin-Alexandru Stancu niflostancu at gmail.com
Fri Apr 26 13:33:08 EEST 2013


Hai să trollăm, dar să şi învăţăm să scriem regex-uri...

2013/4/26 Andrei Picus <office.nightcrawler at gmail.com>

> 2013/4/26 George-Daniel MITRA <george.mitra at cti.pub.ro>
>
>> sed 's/tine\ /tin\ /g'
>>
>
> De ce faci search dupa spatiu (\ ) daca-l inlocuiesti tot cu un spatiu?!
>

Cred că a vrut să caute doar cuvântul întreg "ţine", şi de-asta a pus
condiţia să fie urmat de un spaţiu.
Desigur, şi mai corect ar fi fost să pună cerinţă să fie spaţiu şi înainte.
În practică, pentru acest gen de restricţii se folosesc "ancore" (ex:
*\b*- word boundary [1] ).

Deci, mai corect, ar fi fost *sed 's/\btine\b/tin/g'* (cu sau fără global,
după preferinţe).

Şi, ca să fim [syntax] grammar-nazy până la capăt, nu trebuia pus
backslashul înainte de spaţiu (în bash, în interiorul unei constante
'single quoted', orice caracter este trimis ca atare, nu se poate face
escaping; aici ai avut noroc că sed ştie să considere '\ ' ca spaţiu, deşi
nu este foarte corect din punct de vedere al sintaxei regex).

[1] http://www.regular-expressions.info/wordboundaries.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so2/attachments/20130426/bff05ff9/attachment-0001.html>


More information about the so2 mailing list