-Replace a part of the character string -Extract a part of the character string -Check if the string meets the constraints
Regular expressions are a technique for performing operations such as.
Most descriptions of regular expressions can be shared between any languages.
Replace the specified part of the string with another string </ font>
irb(main):001:0> str = "Eat an apple"
=> "Eat an apple"
irb(main):002:0> str.sub(/Apple/,"Orange")
=> "Eat orange"
The string "eat apple" is assigned to the variable str.
Next, for str, the sub method is used, and apple is specified as the first argument and orange is specified as the second argument.
When output, it is supposed to eat apples → eat oranges.
In this way, ** enclose the character string you want to replace with the first argument in "/ (slash)", and specify the converted character string as the second argument. ** **
Check if the string is included in the string to the left of the method </ font>
irb(main):001:0> str = "Hello, World"
=> "Hello, World"
irb(main):002:0> str.match(/Hello/)
=> #<MatchData "Hello">
irb(main):003:0> str.match(/Good/)
=> nil
The string "Hello, World" is assigned to the variable str
Next, for str, the match method is used and Hello is specified as an argument.
Since "Hello, world" contains the specified string "Hello", you will get the specified string "Hello" as the return value of the MatchData object.
Since "Good" is not included, the return value will be nil.
Like the sub method, the match method also encloses the ** argument with "/ (slash)". ** **
Replace all specified parts of the string with another string </ font>
irb(main):001:0> tel = '080-1234-5678'
=> "080-1234-5678"
irb(main):002:0> tel.sub(/-/,'')
=> "0801234-5678"
irb(main):003:0> tel.gsub(/-/,'')
=> "08012345678"
The telephone number is assigned to the variable tel.
I then try to get rid of it by replacing the hyphen with an empty string in the sub method, but only the first hyphen is replaced.
Use sub to replace only the first specified string, gsub to replace all.
Metacharacters are characters with special meanings and functions, and various restrictions can be made by using them.
Since there are many types, I will introduce some of them by taking password restrictions as an example.
irb(main):001:0> pw = 'Abcd1234'
=> "Abcd1234"
irb(main):002:0> pw.match(/[a-z\d]{8,10}/i)
=> #<MatchData "Abcd1234">
The above is
・ Either letters from a to z or numbers ・ 8 to 10 characters ・ Characters can be large or small
I am putting the constraint.
I will decompose the contents of the argument and explain the meaning of each character
/[a-z\d]{8,10}/i
↓
/ [a-z \ d] {8,10} / i </ font> (The character string in the slash can be either uppercase or lowercase)
↓
[a-z \ d] {8,10} </ font> (matches the one in which the previous character appears 8 to 10 characters)
↓
[a-z] \ d </ font> (matches the numbers)
↓
[a-z] </ font> (matches any of the letters a to z)
type | meaning |
---|---|
[ ] | Match any one of the enclosed characters |
\d | Match numbers |
{a,b} | Matches the previous character that appears a or more and b or less |
i (option) | Case insensitive |
Various constraints can be implemented by combining the two methods introduced basically with the regular expression pattern.
The pattern is just an example. There are many other things you can do with regular expressions.
Recommended Posts