Tricentis Tosca 16.0 Released on Feb-2023 ----- UFT has been upgraded from UFT 15.0.1 to UFT One 15.0.2, Beginning at November 2020.

Monday, 22 June 2015

Regular expression & methods with Examples

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, HiredWired 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 PleasePleeasePleeeeeeeeeeeeeeeeeaseplase.
A plus sign(+) matches one or more occurance of the preceding character.
e.g. Ple+ase matched PleasePleeasePleeeeeeeeeeeeeeeeease 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