Finding the first match
String.=~(Regexp) returns the starting position of the first match or nil if no match was found:
>>"123 456 789"=~/\d+/=>0>>"abc def ghi"=~/\d+/=>nil>>"found"if"123 456 789"=~/\d+/=>"found"Special $ variables will contain information about the last match:
>>"123 456 789"=~/\d\d\d/=>0# $` contains text before last match# $& contains last matched string# $' contains text after last match>>$`+'['+$&+']'+$'=>"[123] 456 789"Accessing captures
$n contains the n-th (...) capture of the last match, $~ contains MatchData object:
>>"123 456 789"=~/(\d\d)(\d)/>>[$1,$2]=>["12","3"]>>$~.captures=>["12","3"]Finding all matches
String.scan returns all matches as String array:
# regex without capture group>>"123 456 789".scan(/\d+/)=>["123","456","789"]# assigning matches to variables>>first,second,third="123 456 789".scan(/\d+/)# regex with captures>>"123 456 789".scan(/(\d)(\d)(\d)/)=>[["1","2","3"],["4","5","6"],["7","8","9"]]String.scan can also be used with a block:
# ruby regex without captures>>"123 456 789".scan(/\d+/){|m|pm}"123""456""789"# ruby regex with captures>>"123 456 789".scan(/(\d)(\d)(\d)/){|m|puts"#{m.inspect}, 1st capture: #{$1}"}["1","2","3"],1stcapture:1["4","5","6"],1stcapture:4["7","8","9"],1stcapture:7Replacing matches
String.gsub returns a new String with matches replaced, String.gsub! changes the String directly:
# replacing with a string (use \1, \2 ... to refer to captures)>>"123 456 789".gsub(/(\d+)/,'[\1]')>>"123 456 789".gsub(/(\d+)/,"[\\1]")=>"[123] [456] [789]"# replacing with a block (using $ variables)>>"123 456 789".gsub(/(\d+)/){|m|m.to_i*2}>>"123 456 789".gsub(/(\d+)/){$1.to_i*2}=>"246 912 1578"Modifiers
/.*/m multiline: . matches newline
/.*/i ignore case
/.*/x extended: ignore whitespace in patternRegular expressions by example
/a/ character 'a'
/\// character '/' (/\?*+{[.|()^$ need to be escaped with \)
/./ any character (including newline for /.../m)
/a?/ 0..1 'a'
/a*/ 0..n 'a'
/a+/ 1..n 'a'
/a{2,7}/ 2..7 'a'
/a{2,}/ 2..n 'a'
/a{,7}/ 0..7 'a'
/a?bc?/ 'b' or 'ab' or 'bc' or 'abc'
/a|bc/ 'a' or 'bc'
/(a|b)c/ 'ac' or 'bc'
/[abc]/ a or b or c
/[^abc]/ any character except a or b or c
/[a-cF-H]/ a or b or c or F or G or H
/\d/ any digit [0-9]
/\w/ any letters, numbers or underscores [a-zA-Z0-9_]
/\s/ any whitespace character (including newline for /.../m)
/\D/ any character except digits
/\W/ any character except letters, numbers or underscores
/\S/ any character except whitespace
/^abc/ abc after line start
/abc$/ abc before line end



.png)






