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

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Szymon wro (dyskusja | edycje)
Nie podano opisu zmian
Linia 50:
A co z "zawiera liczbę heksadecymalną w ostrych nawiasach"? Żaden problem.
 
<source lang="ruby">
<pre>
ruby> def ma_hex?(s) # "zawiera hex w ostrych nawiasach"
| (s =~ /<0(x|X)(\d|[a-f]|[A-F])+>/) != nil
| end
 
nil
ruby>puts ma_hex ?("Ten nie ma.") #=> false
 
false
ruby>puts ma_hex ?("Może ten? {0x35}") #=> false
# (zły rodzaj nawiasów)
 
false
ruby>puts ma_hex ?("Albo ten? <0x38z7e>") #=> false
# fałszywa liczba hex
 
false
ruby>puts ma_hex ?("Dobra, ten: <0xfc0004>.") #=> true
</source>
true
</pre>
 
Chociaż wyrażenia regularne mogą się wydawać na początku nieco zagadkowe, z pewnością szybko osiągniesz satysfakcję z tak ekonomicznej możliwości wyrażania się.
 
Oto mały program który pomoże ci eksperymentować z wyrażeniami regularnymi. Zapisz go jako ''regx.rb'' i uruchom przez wpisanie "<tt>ruby regx.rb"</tt> w linii poleceń.
 
<source lang="ruby">
<pre>
# Wymaga terminala ANSI!
 
Linia 85 ⟶ 86:
puts tekst.gsub(wyr,"#{st}\\&#{en}")
end
</presource>
 
Program wymaga dwukrotnego wprowadzenia danych. Raz oczekuje na łańcuch tekstowy, a raz na wyrażenie regularne. Łańcuch sprawdzany jest pod kątem występowania wyrażenia regularnego, następnie wypisywany z podświetleniem wszystkich pasujących fragmentów. Nie analizuj teraz szczegółów, analiza tego kodu wkrótce się pojawi.
Linia 131 ⟶ 132:
"<tt>=~</tt>" jest operatorem dopasowania w odniesieniu do wyrażeń regularnych; zwraca pozycję w łańcuchu, gdzie może być znaleziony pasujący podłańcuch lub <tt>nil</tt> jeżeli takowy nie występuje.
 
<source lang="ruby">
<pre>
ruby>puts "abcdef" =~ /d/ #=> 3
ruby>puts "aaaaaa" =~ /d/ #=> nil
3
</source>
ruby> "aaaaaa" =~ /d/
nil
</pre>
<noinclude>
{{ProstaNawigacja|spis=Ruby|poprzart=Ruby/Łańcuchy znakowe|poprz=Łańcuchy znakowe|nastart=Ruby/Tablice|nast=Tablice}}