SlideShare una empresa de Scribd logo
1 de 170
Descargar para leer sin conexión
Photo By Mr. Christopher Thomas
Creative Commons Attribution-ShareALike 2.0 Generic License
Beneath the
Surface
Embracing the True Power of
Regular Expressions in Ruby
@nellshamrell
^4[0-9]{12}(?:[0-9]{3})?$
Source: regular-expressions.info
We fear what we
do not understand
Regular
Expressions
+
Ruby
Photo By Shayan
Creative Commons Attribution-ShareALike 2.0 Generic License
Regex Matching in Ruby
Ruby
Methods
Onigmo
Onigmo
Oniguruma
Onigmo
Fork
Onigmo
Reads
Regex
Onigmo
Reads
Regex
Abstract
Syntax
Tree
Parses
Into
Onigmo
Reads
Regex
Abstract
Syntax
Tree
Series of
Instructions
Parses
Into
Compiles
Into
Finite State Machines
Photo By Felipe Skroski
Creative Commons Attribution Generic 2.0
A Finite State Machine
Shows How
Something Works
Annie the Dog
In the
House
Out of
House
Annie the Dog
In the
House
Out of
House
Annie the Dog
Door
In the
House
Out of
House
Annie the Dog
Door
Door
Finite
State
Machine
Finite
State
Machine
Finite
State
Machine
Multiple States
/force/
re = /force/
string = “Use the force”
re.match(string)
f o r c e
/force/
“Use the force”
Path
Doesn’t
Match
f o r c e
/force/
“Use the force”
Still
Doesn’t
Match
f o r c e
/force/
“Use the force”
Path
Matches!
(Fast Forward)
f o r c e
/force/
“Use the force”
f o r c e
/force/
“Use the force”
f o r c e
/force/
“Use the force”
f o r c e
/force/
“Use the force”
f o r c e
/force/
“Use the force”
We Have
A Match!
re = /force/
string = “Use the force”
re.match(string)
=> #<MatchData “force”>
Alternation
Photo By Shayan
Creative Commons Attribution Generic 2.0
/Y(olk|oda)/
Pipe
re = /Y(olk|oda)/
string = “Yoda”
re.match(string)
Y o
o
l k
d a
/Y(olk|oda)/
“Yoda”
Y o
o
l k
d a
/Y(olk|oda)/
Which To
Choose?
“Yoda”
Y o
o
l k
d a
/Y(olk|oda)/
“Yoda”Saves To
Backtrack
Stack
Y o
o
l k
d a
/Y(olk|oda)/
“Yoda”Uh Oh,
No Match
Y o
o
l k
d a
/Y(olk|oda)/
“Yoda”Backtracks
To Here
Y o
o
l k
d a
/Y(olk|oda)/
“Yoda”
Y o
o
l k
d a
/Y(olk|oda)/
“Yoda”
Y o
o
l k
d a
/Y(olk|oda)/
“Yoda”
We Have
A Match!
re = /Y(olk|oda)/
string = “Yoda”
re.match(string)
=> #<MatchData “Yoda”>
Photo By Fancy Horse
Creative Commons Attribution Generic 2.0
Quantifiers
/No+/
Plus
Quantifier
re = /No+/
string = “Noooo”
re.match(string)
N o
o
/No+/
“Noooo”
N o
o
/No+/
“Noooo”
N o
o
/No+/
“Noooo”
Return
Match?
Or Keep
Looping?
N o
o
/No+/
“Noooo”
Greedy
Quantifier
Keeps
Looping
Greedy quantifiers match
as much as possible
Greedy quantifiers use
maximum effort for
maximum return
N o
o
/No+/
“Noooo”
N o
o
/No+/
“Noooo”
N o
o
/No+/
“Noooo”
We Have
A Match!
re = /No+/
string = “Noooo”
re.match(string)
=> #<MatchData “Noooo”>
Lazy Quantifiers
Lazy quantifiers match
as little as possible
Lazy quantifiers use
minimum effort for
minimum return
/No+?/
Makes
Quantifier
Lazy
re = /No+?/
string = “Noooo”
re.match(string)
N o
o
“Noooo”
/No+?/
N o
o
“Noooo”
/No+?/
N o
o
“Noooo”
/No+?/
Return
Match?
Or Keep
Looping?
N o
o
“Noooo”
/No+?/
We Have
A Match!
re = /No+?/
string = “Noooo”
re.match(string)
=> #<MatchData “No”>
Greedy quantifiers are
greedy but reasonable
/.*moon/
Star
Quantifier
re = /.*moon/
string = “That’s no moon”
re.match(string)
. m o o n
.
/.*moon/
“That’s no moon”
. m o o n
.
“That’s no moon”
/.*moon/
. m o o n
.
“That’s no moon”
Loops
/.*moon/
. m o o n
. Which To
Match?
(Fast Forward)
“That’s no moon”
/.*moon/
. m o o n
.
“That’s no moon”
Keeps
Looping
/.*moon/
. m o o n
.
“That’s no moon”
Keeps
Looping
/.*moon/
. m o o n
.
“That’s no moon”
Keeps
Looping
/.*moon/
. m o o n
“That’s no moon”
No More
Characters?
.
/.*moon/
. m o o n
“That’s no moon”
Backtrack or Fail?
.
/.*moon/
. m o o n
“That’s no moon”
Backtracks
.
/.*moon/
. m o o n
“That’s no moon”
Backtracks
.
/.*moon/
. m o o n
“That’s no moon”
Backtracks
.
/.*moon/
. m o o n
“That’s no moon”
Backtracks
Huzzah!
.
/.*moon/
. m o o n
“That’s no moon”
.
/.*moon/
. m o o n
“That’s no moon”
.
/.*moon/
. m o o n
“That’s no moon”
.
/.*moon/
. m o o n
“That’s no moon”
. We Have
A Match!
/.*moon/
re = /.*moon/
string = “That’s no moon”
re.match(string)
=> #<MatchData “That’s
no moon”>
Backtracking = Slow
/No+w+/
re = /No+w+/
string = “Noooo”
re.match(string)
N o
o
“Noooo”
/No+w+/
w
w
N o
o
“Noooo”
/No+w+/
w
w
N o
o
“Noooo”
/No+w+/
w
wLoops
N o
o
“Noooo”
/No+w+/
w
wLoops
N o
o
“Noooo”
/No+w+/
w
wLoops
N o
o
“Noooo”
/No+w+/
w
w
Uh Oh
N o
o
“Noooo”
/No+w+/
w
w
Uh Oh
Backtrack or Fail?
N o
o
“Noooo”
/No+w+/
w
wBacktracks
N o
o
“Noooo”
/No+w+/
w
wBacktracks
N o
o
“Noooo”
/No+w+/
w
wBacktracks
N o
o
“Noooo”
/No+w+/
w
w
Match FAILS
Possessive Quantifers
Possessive quantifiers
do not backtrack
Makes
Quantifier
Possessive
/No++w+/
N o
o
“Noooo”
w
w
/No++w+/
N o
o
“Noooo”
w
w
/No++w+/
N o
o
“Noooo”
w
wLoops
/No++w+/
N o
o
“Noooo”
w
wLoops
/No++w+/
N o
o
“Noooo”
w
wLoops
/No++w+/
N o
o
“Noooo”
w
w
/No++w+/
N o
o
“Noooo”
w
wLoops
Uh Oh
Backtrack or Fail?
/No++w+/
N o
o
“Noooo”
w
w
Match FAILS
/No++w+/
Possessive quantifiers
fail faster by
controlling backtracking
Tying It All Together
Photo By Keith Ramos
Creative Commons Attribution 2.0 Generic
snake_case to CamelCase
Find first letter of string and
capitalize it
snake_case to CamelCase
Find first letter of string and
capitalize it
Find any character that follows
an underscore and capitalize it
snake_case to CamelCase
Find first letter of string and
capitalize it
Find any character that follows an
underscore and capitalize it
Remove underscores
snake_case to CamelCase
Find first letter of string and
capitalize it
snake_case to CamelCase
it ʺ″capitalizes the first letterʺ″ do
end
result = @case_converter
.upcase_chars(ʺ″methodʺ″)
result.should == ʺ″Methodʺ″
case_converter_spec.rb
before(:each) do
end
@case_converter = CaseConverter.new
it ʺ″capitalizes the first letterʺ″ do
end
result = @case_converter
.upcase_chars(ʺ″methodʺ″)
result.should == ʺ″Methodʺ″
case_converter_spec.rb
before(:each) do
end
@case_converter = CaseConverter.new
it ʺ″capitalizes the first letterʺ″ do
end
result = @case_converter
.upcase_chars(ʺ″methodʺ″)
result.should == ʺ″Methodʺ″
case_converter_spec.rb
before(:each) do
end
@case_converter = CaseConverter.new
/ /^
Anchors
Match To
Beginning Of
String
/ / w^
Matches Any
Word
Character
case_converter.rb
def upcase_chars(string)
end
re = / /w^
string.gsub(re){|char| char.upcase}
case_converter.rb
def upcase_chars(string)
end
re = / /w^
string.gsub(re){|char| char.upcase}
case_converter.rb
def upcase_chars(string)
end
re = / /w^
string.gsub(re){|char| char.upcase}
Spec Passes!
it ʺ″capitalizes the first letterʺ″ do
end
result = @case_converter
result.should == ʺ″_Methodʺ″
case_converter_spec.rb
.upcase_chars(ʺ″_methodʺ″)
it ʺ″capitalizes the first letterʺ″ do
end
result = @case_converter
result.should == ʺ″_Methodʺ″
case_converter_spec.rb
.upcase_chars(ʺ″_methodʺ″)
it ʺ″capitalizes the first letterʺ″ do
end
result = @case_converter
result.should == ʺ″_Methodʺ″
case_converter_spec.rb
.upcase_chars(ʺ″_methodʺ″)
Spec Fails!
Expected: ʺ″_Methodʺ″
Got: ʺ″_methodʺ″
Spec Failure:
Problem:
Matches Letters
AND Underscores
 w^/ /
/ /[a-z]^
Matches
Only
Lowercase
Letters
/ /[a-z]^[^a-z]
Matches
everything
BUT
lowercase
letters
/ /[a-z]^[^a-z]?
Makes
Character
Class
Optional
case_converter.rb
def upcase_chars(string)
end
re =
string.gsub(re){|char| char.upcase}
/ /[a-z]^[^a-z]?
case_converter.rb
def upcase_chars(string)
end
string.gsub(re){|char| char.upcase}
Spec Passes!
re = / /[a-z]^[^a-z]?
Find any character that follows an
underscore and capitalize it
snake_case to CamelCase
it ʺ″capitalizes letters after an underscoreʺ″ do
end
result = @case_converter
result.should == ʺ″Some_Methodʺ″
case_converter_spec.rb
.upcase_chars(ʺ″some_methodʺ″)
it ʺ″capitalizes letters after an underscoreʺ″ do
end
result = @case_converter
result.should == ʺ″Some_Methodʺ″
case_converter_spec.rb
.upcase_chars(ʺ″some_methodʺ″)
/ /[a-z]^[^a-z]?
Pipe For
Alternation
| [a-z]/ /[a-z]^[^a-z]?
Look Behind
(?<=_)| [a-z]/ /[a-z]^[^a-z]?
case_converter.rb
def upcase_chars(string)
end
re =
string.gsub(re){|char| char.upcase}
| [a-z](?<=_)/ /[a-z]^[^a-z]?
case_converter.rb
def upcase_chars(string)
end
re =
string.gsub(re){|char| char.upcase}
| [a-z](?<=_)/ /[a-z]^[^a-z]?
Spec Passes!
Remove underscores
snake_case to CamelCase
it ʺ″removes underscoresʺ″ do
end
result = @case_converter
result.should == ʺ″somemethodʺ″
case_converter_spec.rb
.rmv_underscores(ʺ″some_methodʺ″)
it ʺ″removes underscoresʺ″ do
end
result = @case_converter
result.should == ʺ″somemethodʺ″
case_converter_spec.rb
.rmv_underscores(ʺ″some_methodʺ″)
it ʺ″removes underscoresʺ″ do
end
result = @case_converter
result.should == ʺ″somemethodʺ″
case_converter_spec.rb
.rmv_underscores(ʺ″some_methodʺ″)
Matches
An
Underscore
/ /_
case_converter.rb
def rmv_underscores(string)
end
re =
string.gsub(re, “”)
/ /_
case_converter.rb
def rmv_underscores(string)
end
string.gsub(re, “”)
re = / /_
case_converter.rb
def rmv_underscores(string)
end
string.gsub(re, “”)
Spec Passes!
re = / /_
Combine results of two methods
snake_case to CamelCase
it ʺ″converts snake_case to CamelCaseʺ″ do
end
result = @case_converter
result.should == ʺ″SomeMethodʺ″
case_converter_spec.rb
.snake_to_camel(ʺ″some_methodʺ″)
it ʺ″converts snake_case to CamelCaseʺ″ do
end
result = @case_converter
result.should == ʺ″SomeMethodʺ″
case_converter_spec.rb
.snake_to_camel(ʺ″some_methodʺ″)
it ʺ″converts snake_case to CamelCaseʺ″ do
end
result = @case_converter
result.should == ʺ″SomeMethodʺ″
case_converter_spec.rb
.snake_to_camel(ʺ″some_methodʺ″)
case_converter.rb
def snake_to_camel(string)
end
upcase_chars(string)
case_converter.rb
def snake_to_camel(string)
end
upcase_chars(string)rmv_underscores( )
case_converter.rb
def snake_to_camel(string)
end
upcase_chars(string)rmv_underscores( )
Spec Passes!
Code is available here:
https://github.com/nellshamrell/
snake_to_camel_case
Conclusion
Photo By Steve Jurvetson
Creative Commons Attribution Generic 2.0
Develop regular expressions
in small pieces
If you write code, you can
write regular expressions
Move beyond the fear
Photo By Leonardo Pallotta
Creative Commons Attribution Generic 2.0
Nell Shamrell
Software Development Engineer
Blue Box Inc
@nellshamrell
https://gist.github.com/
nellshamrell/6031738
Resources:

Más contenido relacionado

Similar a Beneath the Surface: Regular Expressions in Ruby

Regular expressions
Regular expressionsRegular expressions
Regular expressionsJames Gray
 
Strings,patterns and regular expressions in perl
Strings,patterns and regular expressions in perlStrings,patterns and regular expressions in perl
Strings,patterns and regular expressions in perlsana mateen
 
Unit 1-strings,patterns and regular expressions
Unit 1-strings,patterns and regular expressionsUnit 1-strings,patterns and regular expressions
Unit 1-strings,patterns and regular expressionssana mateen
 
Threequals - Case Equality in Ruby
Threequals - Case Equality in RubyThreequals - Case Equality in Ruby
Threequals - Case Equality in RubyLouis Scoras
 
Practical JavaScript Programming - Session 6/8
Practical JavaScript Programming - Session 6/8Practical JavaScript Programming - Session 6/8
Practical JavaScript Programming - Session 6/8Wilson Su
 
DOES NOT NEED TO BE ANSWERED UNTIL NOV 13thWords AssignmentRober.pdf
DOES NOT NEED TO BE ANSWERED UNTIL NOV 13thWords AssignmentRober.pdfDOES NOT NEED TO BE ANSWERED UNTIL NOV 13thWords AssignmentRober.pdf
DOES NOT NEED TO BE ANSWERED UNTIL NOV 13thWords AssignmentRober.pdfarchanaemporium
 
Scala Language Intro - Inspired by the Love Game
Scala Language Intro - Inspired by the Love GameScala Language Intro - Inspired by the Love Game
Scala Language Intro - Inspired by the Love GameAntony Stubbs
 
Regular expressions in Python
Regular expressions in PythonRegular expressions in Python
Regular expressions in PythonSujith Kumar
 
AST Transformations
AST TransformationsAST Transformations
AST TransformationsHamletDRC
 
Macros and reflection in scala 2.10
Macros and reflection in scala 2.10Macros and reflection in scala 2.10
Macros and reflection in scala 2.10Johan Andrén
 
And Now You Have Two Problems
And Now You Have Two ProblemsAnd Now You Have Two Problems
And Now You Have Two ProblemsLuca Mearelli
 
Pattern Matching: From Small Enhancement to Major Feature (talk from JavaLand...
Pattern Matching: From Small Enhancement to Major Feature (talk from JavaLand...Pattern Matching: From Small Enhancement to Major Feature (talk from JavaLand...
Pattern Matching: From Small Enhancement to Major Feature (talk from JavaLand...🎤 Hanno Embregts 🎸
 
16 Java Regex
16 Java Regex16 Java Regex
16 Java Regexwayn
 
Advanced Perl Techniques
Advanced Perl TechniquesAdvanced Perl Techniques
Advanced Perl TechniquesDave Cross
 
jRuby: The best of both worlds
jRuby: The best of both worldsjRuby: The best of both worlds
jRuby: The best of both worldsChristopher Spring
 

Similar a Beneath the Surface: Regular Expressions in Ruby (20)

Regular expressions
Regular expressionsRegular expressions
Regular expressions
 
Strings,patterns and regular expressions in perl
Strings,patterns and regular expressions in perlStrings,patterns and regular expressions in perl
Strings,patterns and regular expressions in perl
 
Unit 1-strings,patterns and regular expressions
Unit 1-strings,patterns and regular expressionsUnit 1-strings,patterns and regular expressions
Unit 1-strings,patterns and regular expressions
 
Threequals - Case Equality in Ruby
Threequals - Case Equality in RubyThreequals - Case Equality in Ruby
Threequals - Case Equality in Ruby
 
Practical JavaScript Programming - Session 6/8
Practical JavaScript Programming - Session 6/8Practical JavaScript Programming - Session 6/8
Practical JavaScript Programming - Session 6/8
 
DOES NOT NEED TO BE ANSWERED UNTIL NOV 13thWords AssignmentRober.pdf
DOES NOT NEED TO BE ANSWERED UNTIL NOV 13thWords AssignmentRober.pdfDOES NOT NEED TO BE ANSWERED UNTIL NOV 13thWords AssignmentRober.pdf
DOES NOT NEED TO BE ANSWERED UNTIL NOV 13thWords AssignmentRober.pdf
 
Scala Language Intro - Inspired by the Love Game
Scala Language Intro - Inspired by the Love GameScala Language Intro - Inspired by the Love Game
Scala Language Intro - Inspired by the Love Game
 
Perl Presentation
Perl PresentationPerl Presentation
Perl Presentation
 
Cleancode
CleancodeCleancode
Cleancode
 
Regular expressions in Python
Regular expressions in PythonRegular expressions in Python
Regular expressions in Python
 
AST Transformations
AST TransformationsAST Transformations
AST Transformations
 
Macros and reflection in scala 2.10
Macros and reflection in scala 2.10Macros and reflection in scala 2.10
Macros and reflection in scala 2.10
 
And Now You Have Two Problems
And Now You Have Two ProblemsAnd Now You Have Two Problems
And Now You Have Two Problems
 
Pattern Matching: From Small Enhancement to Major Feature (talk from JavaLand...
Pattern Matching: From Small Enhancement to Major Feature (talk from JavaLand...Pattern Matching: From Small Enhancement to Major Feature (talk from JavaLand...
Pattern Matching: From Small Enhancement to Major Feature (talk from JavaLand...
 
16 Java Regex
16 Java Regex16 Java Regex
16 Java Regex
 
Adv. python regular expression by Rj
Adv. python regular expression by RjAdv. python regular expression by Rj
Adv. python regular expression by Rj
 
Advanced Perl Techniques
Advanced Perl TechniquesAdvanced Perl Techniques
Advanced Perl Techniques
 
jRuby: The best of both worlds
jRuby: The best of both worldsjRuby: The best of both worlds
jRuby: The best of both worlds
 
Javascript the New Parts
Javascript the New PartsJavascript the New Parts
Javascript the New Parts
 
Regular Expressions
Regular ExpressionsRegular Expressions
Regular Expressions
 

Más de Nell Shamrell-Harrington

This Week in Rust: 400 Issues and Counting!
This Week in Rust: 400 Issues and Counting!This Week in Rust: 400 Issues and Counting!
This Week in Rust: 400 Issues and Counting!Nell Shamrell-Harrington
 
Higher. Faster. Stronger. Your Applications with Habitat
Higher. Faster. Stronger. Your Applications with HabitatHigher. Faster. Stronger. Your Applications with Habitat
Higher. Faster. Stronger. Your Applications with HabitatNell Shamrell-Harrington
 
Containers, Virtual Machines, and Bare Metal, Oh My!
Containers, Virtual Machines, and Bare Metal, Oh My!Containers, Virtual Machines, and Bare Metal, Oh My!
Containers, Virtual Machines, and Bare Metal, Oh My!Nell Shamrell-Harrington
 
Creating Packages that Run Anywhere with Chef Habitat
Creating Packages that Run Anywhere with Chef HabitatCreating Packages that Run Anywhere with Chef Habitat
Creating Packages that Run Anywhere with Chef HabitatNell Shamrell-Harrington
 
First Do No Harm: Surgical Refactoring (extended edition)
First Do No Harm: Surgical Refactoring (extended edition)First Do No Harm: Surgical Refactoring (extended edition)
First Do No Harm: Surgical Refactoring (extended edition)Nell Shamrell-Harrington
 
A Supermarket of Your Own: Running a Private Chef Supermarket
A Supermarket of Your Own: Running a Private Chef SupermarketA Supermarket of Your Own: Running a Private Chef Supermarket
A Supermarket of Your Own: Running a Private Chef SupermarketNell Shamrell-Harrington
 

Más de Nell Shamrell-Harrington (20)

This Week in Rust: 400 Issues and Counting!
This Week in Rust: 400 Issues and Counting!This Week in Rust: 400 Issues and Counting!
This Week in Rust: 400 Issues and Counting!
 
The Rust Borrow Checker
The Rust Borrow CheckerThe Rust Borrow Checker
The Rust Borrow Checker
 
Higher. Faster. Stronger. Your Applications with Habitat
Higher. Faster. Stronger. Your Applications with HabitatHigher. Faster. Stronger. Your Applications with Habitat
Higher. Faster. Stronger. Your Applications with Habitat
 
Habitat Service Discovery
Habitat Service DiscoveryHabitat Service Discovery
Habitat Service Discovery
 
Web Operations101
Web Operations101Web Operations101
Web Operations101
 
Rust Traits And You: A Deep Dive
Rust Traits And You: A Deep DiveRust Traits And You: A Deep Dive
Rust Traits And You: A Deep Dive
 
Rust, Redis, and Protobuf - Oh My!
Rust, Redis, and Protobuf - Oh My!Rust, Redis, and Protobuf - Oh My!
Rust, Redis, and Protobuf - Oh My!
 
Containers, Virtual Machines, and Bare Metal, Oh My!
Containers, Virtual Machines, and Bare Metal, Oh My!Containers, Virtual Machines, and Bare Metal, Oh My!
Containers, Virtual Machines, and Bare Metal, Oh My!
 
Chef Vault: A Deep Dive
Chef Vault: A Deep DiveChef Vault: A Deep Dive
Chef Vault: A Deep Dive
 
Open Source Governance 101
Open Source Governance 101Open Source Governance 101
Open Source Governance 101
 
DevOps in Politics
DevOps in PoliticsDevOps in Politics
DevOps in Politics
 
Open Source Governance - The Hard Parts
Open Source Governance - The Hard PartsOpen Source Governance - The Hard Parts
Open Source Governance - The Hard Parts
 
Creating Packages that Run Anywhere with Chef Habitat
Creating Packages that Run Anywhere with Chef HabitatCreating Packages that Run Anywhere with Chef Habitat
Creating Packages that Run Anywhere with Chef Habitat
 
Refactoring terraform
Refactoring terraformRefactoring terraform
Refactoring terraform
 
Refactoring Infrastructure Code
Refactoring Infrastructure CodeRefactoring Infrastructure Code
Refactoring Infrastructure Code
 
Devops: A History
Devops: A HistoryDevops: A History
Devops: A History
 
First Do No Harm: Surgical Refactoring (extended edition)
First Do No Harm: Surgical Refactoring (extended edition)First Do No Harm: Surgical Refactoring (extended edition)
First Do No Harm: Surgical Refactoring (extended edition)
 
First Do No Harm: Surgical Refactoring
First Do No Harm: Surgical RefactoringFirst Do No Harm: Surgical Refactoring
First Do No Harm: Surgical Refactoring
 
A Supermarket of Your Own: Running a Private Chef Supermarket
A Supermarket of Your Own: Running a Private Chef SupermarketA Supermarket of Your Own: Running a Private Chef Supermarket
A Supermarket of Your Own: Running a Private Chef Supermarket
 
Public Supermarket: The Insider's Tour
Public Supermarket: The Insider's TourPublic Supermarket: The Insider's Tour
Public Supermarket: The Insider's Tour
 

Último

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Último (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Beneath the Surface: Regular Expressions in Ruby