SSN Regular Expressions in Ruby [closed] - ruby

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions concerning problems with code you've written must describe the specific problem — and include valid code to reproduce it — in the question itself. See SSCCE.org for guidance.
Closed 9 years ago.
Improve this question
I'm just starting to learn Regular Expressions. My code works, but I'd like to make it better.
# Ensure all of the Social Security numbers use dashes for delimiters.
# Example: 480.01.4430 and 480014430 would both be 480-01-4430.
def format_ssns(string)
string.gsub!(/\./, '-') if string =~ /(\d{9})|(\d{3})\D(\d{2})\D(\d{4})/
string.insert(3, '-') if string =~ /(\d{9})/
string.insert(6, '-') if string =~ /(\d{3})\D(\d{6})/
p string
end
format_ssns("234601422, 350.80.0744, 013-60-8762")

This covers all 3:
string = "234601422, 350.80.0744, 013-60-8762"
string.gsub /\b(\d{3})\D?(\d{2})\D?(\d{4})\b/, '\1-\2-\3'
#=> "234-60-1422, 350-80-0744, 013-60-8762"

how about s.gsub!(/\D/, '').insert(3, '-').insert(6, '-')

Related

Need to fetch the password using Regular expression [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
a= <<EOF
Password
:
7UV1ceFQ (You will be asked to change this after logging in for the first time)
EOF
I need to extract the value "7UV1ceFQ" using regular expression, I have tried using '/Password : 7UV1ceFQ/ but it's not working, I think it's because next line character is included, Can anyone please suggest me to exact this value?
▶ a[/^\S+(?=\s\(You will be)/]
#⇒ "7UV1ceFQ"
The regular expression above reads as:
starting with a new line start ^
get all non-space symbols greedy \S+
until the positive lookahead (?=\s\(You will be)

Regular expression in ruby 2.1.5 [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 6 years ago.
Improve this question
I want to extract alpha-beta from:
text = "alpha-beta-1.0.txt"
to get:
output = "alpha-beta"
Can somebody here help me with a regex?
If you have a computer programming problem, and you think, "I'll use a
regex!", now you have two problems.
Here it is without a regex:
strings = [
"alpha-beta-1.0.txt",
"alpha-beta-theta-2.0.txt",
"alpha-3.0.text",
]
strings.each do |string|
output = string.rpartition('-')[0]
puts output
end
--output:--
alpha-beta
alpha-beta-theta
alpha
If you want to extract just before last -, you can use this regex
(^.*)-(?:.*$)
Rubular Demo
For finding all non-overlapping matches, you can use scan as
str = "alpha-beta-1.0.txt"
print str.scan(/(^.*)-(?:.*$)/)[0][0]
Ideone Demo
You can also use lookahead as
.*(?=-)
With the information we have i'd propose:
output = "alpha-beta-1.0.txt".match(/(.*-.*)-.*/)[1]
.* matches a lot though. So perhaps you need a more restrictive match.

Regex issue with a string and all numbers [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
In Ruby, I would like to create a regular expression that matches the following:
building/liberty-green/6d
(the word building and some number somewhere after it)
Currently, I have /building/ and need to add \d (any digit) to it, but I don't know how.
You need /building\/[\w-]+\/\w+/. For example:
irb(main):001:0> /building\/[\w-]+\/\w+/.match("building/liberty-green/6d")
=> #<MatchData "building/liberty-green/6d">
That expression will match any string that:
Starts with /building/
Then follows with one or more word characters or dashes (eg. foo-bar, foo, bar-1)
Then follows with a /
Finally ends with one or more word characters (eg. foo, 6d, 12345)
Note that \w includes digits.

Regex for words and spaces? [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 9 years ago.
Improve this question
I'm trying to create a regex to match words and spaces:
"Hello There" - Match
"#Hello" - No Match
"123Hello" - No Match
It should something like this:
( *[a-zA-Z]* *)
I need to define a method starts_with_consonant?(s) that takes a string and returns true if it starts with a consonant and false otherwise.
For our purposes, a consonant is any letter other than 'A', 'E', 'I', 'O', 'U'.
This is for a course.
This seems to work:
(?<=^|\s)[a-zA-Z]+(\s+[a-zA-Z]+)*(?=\s|$)
See a live demo of this working with your examples (and others)
If you want to match only if the whole input matches, swap the look arounds for ^ and $:
^[a-zA-Z]+(\s+[a-zA-Z]+)*$
See a live demo of this.
I guess this does almost what you want:
\A(\w*\s+\w+)+\Z

Convert string using Ruby [closed]

Closed. This question needs details or clarity. It is not currently accepting answers.
Want to improve this question? Add details and clarify the problem by editing this post.
Closed 8 years ago.
Improve this question
How can I convert the string russ(ai)(edocn)cup to russiancodecup using Ruby?
By using gsub with a block, you can replace any match of a regular expression by the result of this block.
s = "russ(ai)(edocn)cup"
s.gsub(/\(([^)]*)\)/) {$1.reverse} # => "russiancodecup"
Here the regular expression will match any non-) character between brackets. Then it will send reverse to $1 which is gonna be the content between brackets.
$0 will be the complete match and $n, the nth "submatch". (anybody for the correct word ?)

Resources