Ruby/Wyrażenia regularne: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje) |
Szymon wro (dyskusja | edycje) |
||
Linia 100:
Wypróbujmy kilka innych tekstów.
<
str> abc012dbcd555
pat> \d
abc012dbcd555
~~~ ~~~
</pre>
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>
str> foozboozer
pat> f.*z
foozboozer
~~~~~~~~
</pre>
'''foozbooz''' jest spasowany zamiast tylko '''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.
<pre>
str> Wed Feb 7 08:58:04 JST 1996
pat> [0-9]+:[0-9]+(:[0-9]+)?
Wed Feb 7 08:58:04 JST 1996
~~~~~~~~
</pre>
"=~" jest operatorem pasowania w odniesieniu do wyrażeń regularnych; zwraca pozycję w łańcuchu, gdzie może być znaleziony pasujący podłańcuch lub ''nil'' jeżeli takowy nie występuje.
<pre>
ruby> "abcdef" =~ /d/
3
ruby> "aaaaaa" =~ /d/
nil
</pre>
{{ProstaNawigacja|spis=Ruby|poprzart=Ruby/Łańcuchy znakowe|poprz=Łańcuchy znakowe|nastart=Ruby/Tablice|nast=Tablice}}
|