Ruby/Wyrażenia regularne: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Szymon wro (dyskusja | edycje)
Linia 46:
Wspólny termin określający wzory które używają tego dziwnych symboli to wyrażenia regularne. W Rubim tak samo jak w Perlu są one zazwyczaj otoczone raczej przez ukośniki niż przez cudzysłowy. Jeżeli nigdy wcześniej nie pracowałeś z wyrażeniami regularnymi, prawdopodobnie wyglądają jak wszystko inne ale nie jak coś regularnego, nie mniej powinieneś być sprytny i poświęcić trochę czasu by się z nimi zaznajomić. Wyrażenia regularne mają skutecznie ekspresywną moc, która oszczędzi ci bólów głowy (i wielu linii kodu) niezależnie od tego, czy potrzebujesz dopasowywania wzorców, wyszukiwania czy też innego manipulowania łańcuchami.
 
Dla przykładu, przypuśćmy, że chcemy sprawdzić czy łańcuch pasuje do tego opisu: "Zaczyna się małą literą ''f'', po której zaraz następuje jedna duża litera i opcjonalnie jakieś inne znaki, aż do wystąpienia innych innych małych liter." Jeżeli jesteś doświadczonym programistą C, prawdopodobnie już napisałeś około tuzina linii kodu w głowie, prawda? Przyznaj to; prawie nie możesz sobie poradzić. Ale w Rubim potrzebujesz jedynie by twój łańcuch został sprawdzony napod kątem występowaniewystępowania wyrażenia regularnego /^f[A-Z][^a-z]*$/.
 
A co z "Zawiera heksadecymalnyliczbę numerheksadecymalną w ostrych nawiasach"? Żaden problem.
 
<pre>
Linia 65:
</pre>
 
Chociaż wyrażenia regularne mogą wydawać się zagadkowewydawać przyza pierwszym spojrzeniurazem nieco zagadkowe, z pewnością szybko osiągniesz satysfakcję z możliwości wyrażaniatak sięekonomicznego takwyrażania ekonomiczniesię.
 
Oto mały program który pomoże ci eksperymentować z wyrażeniami regularnymi. Zapisz go jako ''regx.rb'' i uruchom przez wpisanie "ruby regx.rb" w linii poleceń.
Linia 109:
Jeśli cię to zaskoczyło, sprawdź w tabeli na górze tej strony: '''\d''' nie ma żadnego związku ze znakiem ''d'', a oznacza pojedynczą cyfrę.
 
A co, jeśli jest więcej niż jeden sposób do poprawnego spasowania wzoru?
 
<pre>
Linia 118:
</pre>
 
'''foozbooz''' jest spasowany zamiast tylkosamego '''fooz''', gdyż wyrażenie regularne wybiera najdłuższy możliwy podłańcuch.
 
Oto wzór do wyizolowania pola zawierającego godzinę z separatorem w postaci dwukropka.