The name regular expression name comes from mathematics where it is defined as
A regular expression is a particular meta-syntax for specifying regular grammars, which has many useful applications.
A regular expression basically is a pattern, describing a String which is processed by some sort of software, which can be called as regular expression engine. The engines processes the regular expression and try to match the pattern to the given string.
* Here, the words/letters in blue denotes a regular expression and green denotes the matches.
Meta-Characters
The opening square bracket [, the backslash \, the caret ^, the dollar sign $, the period or dot ., the vertical bar or pipe symbol |, the question mark ?, the asterisk or star *, the plus sign +, the opening round bracket ( and the closing round bracket ), these special charaters are often called as Meta-characters. If you need to use any of these characters as a literal in a regular expression, you need to escape them with a backslash else it will be treated as a special character.
e.g. if you have the regular expression as a\+b+c, the first plus sign will be treated as a literal character and the other will have a special meaning.
Single Character
A period (.) matches a single character except the line break character (\n).
e.g. .ired matches Fired, Hired, Wired etc.
Character Sets
Square bracket ([]) can be used to match a character from a given set. e.g. to match a or i in Fired orFared, we can use F[ia]red.
A hyphen inside the square bracket denotes the range of characters. e.g. [0-9] matches a single digit between 0 to 9. More than one range can be used inside one sqaure bracket like [0-9a-z]
When a caret(^) is the the first character just after the opening bracket ‘[^’, it matches any character except the ones specified in the set.
e.g. q[^x] matches qu in ‘quicktest’.
Repetition
An asterisk(*) matches zero or more occurance of the preceding character.
e.g. Ple*ase matches Please, Pleease, Pleeeeeeeeeeeeeeeeease, plase.
A plus sign(+) matches one or more occurance of the preceding character.
e.g. Ple+ase matched Please, Pleease, Pleeeeeeeeeeeeeeeeease but not plase.
A question mark(?) matches zero or one occurance of the preceding character.
e.g. Ple?ase matches Please or Plase only.
Grouping
We can place parenthesis around multiple tokens to group them together. The containig sequence is treated as a unit.
e.g. QuickTest(Professional) In this, the string ‘Professional’ is treated as a single unit and we can apply a quantifier to this group if required.
QuickTest(Professional)? matches QuickTest or QuickTestProfessional.
Alternation
a vertical line(|) matches one of the given expression.
e.g. day|night matches day in ‘for so many days and nights’
if the regular expression is applied again it will match night.
Anchors
anchors matches the position.
^ matches at the beginning of the string.
$ matches at the end of the string.
\w matches any alphanumeric character and the underscore.
\W matches any character other than alphanumeric and underscore
\b matches at the start and/or end of the string only for if it is a word character.
\B matches every position where \b cannot match.
Usually these operator are combined into one single expression to match the expected search criteria that we need.
e.g’
[0-9] matches single-digit numbers 0 to 9. [1-9][0-9] matches double-digit numbers 10 to 99
^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$ matches a date in yyyy-mm-dd
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b will match an email address.
More Expressions & Explanation
1>Match any single character
(.)
Example: “lear.” will match “learn”, “lear1” or “lear%”
2>Match the preceding
character zero or more times (*)
Example: “zo*” matches either “z” or “zoo”.
3>Match any string starting
with text specified just before the pattern (.*)
Example: “learn.*” will match any string starting with
“learn”. Let us say you encounter a string “We are on learnqtp” but you see
that the characters after the string “learn” keeps changing. In such a case you
can simple make a regular expression as “We are on learn.*”
4>Match the beginning of a
line (^)
Example: “^learnqtp” will match any line that starts with
“learnqtp” hence it will match learnqtp, learnqtp.com but not www.learnqtp.com
5>Match the end of a line ($)
Example: “learnqtp$” will match any line that ends with
“learnqtp” hence it will match learnqtp, www.learnqtp but not www.learnqtp.com
6>Match the preceding
character one or more times (+)
Example: “zo+” matches “zoo” but not “z”.
7>Match the preceding
character zero or one time (?)
Example: “a?ve?” matches the “ve” in “never”.
Regexp object:-
Regexp
object is used to integrate QTP with regular expression utilization. This
object consist of 3 properties and 3 methods
A) Pattern:- we can use this property to store
expected expression for matching.
Syntax:- set
r=new regexp
r.pattern=”regexp”
r.global=true/false
B) Global:- We
can use this property to specify pattern matching on given text until end of
text.
Syntax:- set
r=new regexp
r.pattern=”regexp”
r.global=true/false
c) Ignorecase:- We can use this property to specify
case sensitiveness.
Syntax:- set
r=new regexp
r.pattern=”[A-Z][a-z]+”
r.global=true
r.ignorecase=true
In example code, a string will be
matched with pattern which start’s with lowercase also. Because ignorecase is
true.
D)
Execute( ):- We can
use this method to apply given pattern on given text and find matched values in
text.
Ex:- set
r=new regexp
r.pattern=”[0-9]+”
r.global=true
x=”jky345
acd 23 jkil34dd”
set
y=r.execute(x)
for
each z in y
print(z.value)
next
E)Test:- We can use this to apply given
pattern on given text for matching. If pattern was matched with matched with
text , then this method returns true.
Ex:- set
r=new regexp
r.pattern=”[0-9]+”
r.global=true
x=”544755”
if r.test(x)
then
print(“matched”)
else
print(“mismatched”)
end
if
A) Replace( ):- We can use this method to replace
matched text with other text.
Ex:- set
r=new regexp
r.pattern=”[0-9]+”
r.global=true
x=”my
name is 5”
r.replace(x,”A”)
print(x)
Ex:-8 To
copy one file text into another file.
Option
explicit
Dim
fso,fo,l,fo1,fo2
Set
fso=createobject(“scripting.filesystemobject”)
Set
fo1=fso.opentextfile(“c:\sample1.txt”,1,false)
Set
fo2=fso.opentextfile(“c:\sample2.txt”,2,true)
While
fo1.atendofstream< >true
l=fo1.readline
fo2.writeline(l)
wend
fo1.close
fo2.close
set
fo1=nothing
set
fo2=nothing
set
fso=nothing
Ex:-9 Write
vbscript in qtp , to copy numbers in file1 into file2.
Option
explicit
Dim
fso,fo1,fo2,l,nums,num
Set
fso=createobject(“scripting.filesystemobject”)
Set
fo1=fso.opentextfile(“c:\sample1.txt”,1,false)
Set
fo2=fso.opentextfile(“c:\sample2.txt”,2,true)
While
fo1.atendofstream< >true
l=fo1.readline
set
r=new regexp
r.pattern=”[0-9]+”
r.global=true
set
nums=r.execute(l)
for
each num in nums
fo2.writeline(num.value)
next
set
numns=nothing
set
r=nothing
wend
fo1.close
fo2.close
set
fo1=nothing
set
fo2=nothing
set
fso=nothing
Ex:-10 To copy alphanumeric only from file1 to
file2.
Option explicit
Dim fso,fo1,fo2,l,nums,num,r
Set
fso=createobject(“scripting.filesystemobject”)
Set
fo1=fso.opentextfile(“c:\sample1.txt”,1,false)
Set
fo2=fso.opentextfile(“c:\sample2.txt”,2,true)
While fo1.atendofstream< >true
l=fo1.readline
set
r=new regexp
r.pattern=”[0-9]+[a-z]+”
r.global=true
set
nums=r.execute(l)
for
each num in nums
fo2.writeline(num.value)
next
wend
fo1.close
fo2.close
set fo1=nothing
set fo2=nothing
set fso=nothing
Ex:-11 To
copy dates in file1 into file2. Here date is “mm/dd/yy”
Option
explicit
Dim
fso,fo1,fo2,l,nums,num,r
Set
fso=createobject(“scripting.filesystemobject”)
Set
fo1=fso.opentextfile(“c:\sample1.txt”,1,false)
Set
fo2=fso.opentextfile(“c;\sample2.txt”,2,true)
While
fo1.atendofstream< >true
l=fo1.readline
set
r=new regexp
r.pattern=”(([0][0-9])|([1][0-2]))[/](([0][0-9])|([1][0-9])|([2][0-9])|([3][0-1]))[/][0-9]{2}”
r.global=true
set
nums=r.execute(l)
for
each num in nums
fo2.writeline(num.value)
next
set
nums=nothing
set
r=nothing
wend
set fo1=nothing
set fo2=nothing
set fso=nothing