Difference between revisions of "Regular Expressions"

From vwiki
Jump to navigation Jump to search
(Reworked page)
(→‎Examples: Added "VMHBA LUN ID")
Line 27: Line 27:
''' <code> (?<=\[)(.*?)(?=\]) </code> '''
''' <code> (?<=\[)(.*?)(?=\]) </code> '''


Matches everything between <code> [ </code> and <code> ] </code>, so for example...
Matches everything between <code> [ </code> and <code> ]</code>, so for example...
* <code> VMFS_SCSI_DS_01 </code> is matched from <code> [VMFS_SCSI_DS_01] My_VM/MyVM.vmdk
* <code> VMFS_SCSI_DS_01 </code> is matched from <code> [VMFS_SCSI_DS_01] My_VM/MyVM.vmdk


Its essentially done via three chunks of the regex...
Its essentially done via three chunks of the regex...
# <code> (?<=\[) </code>
# <code><nowiki> (?<=\[) </nowiki></code>
#* Requires that <code> [ </code> immediately proceeds the match
#* Requires that <code> [ </code> immediately proceeds the match
# <code> (.*?) </code>
# <code> (.*?) </code>
Line 37: Line 37:
# <code> (?=\]) </code>
# <code> (?=\]) </code>
#* Requires that <code> [ </code> immediately follows the match
#* Requires that <code> [ </code> immediately follows the match
=== VMHBA LUN ID ===
'''<code> (?<=:)([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$ </code>
Finds a number between 0 and 255 immediately after a <code>:</code> at the end of a line, specifically intended to get the LUN ID from a VMware canonical path, so for example...
* <code>13</code> is matched from <code>vmhba3:0:13</code>
Stepping through the regex...
# <code><nowiki> (?<=:) </nowiki></code>
#* Requires that <code> : </code> immediately proceeds the match
# <code>([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])</code>
#* Matches any number between 0 and 255
# <code>$</code>
#* Ensures that the proceeding match occurs at the end of a line

Revision as of 11:48, 12 November 2010

Useful/Standard RegEx

Matches Expression
IP Address ^\b((25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)\.){3}(25[0-5]|2[0-4]\d|[01]\d\d|\d?\d)\b
Hostname (no domain) \A(\w|-)+
Email address \b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b

Examples

Logfile Name

\d{4}-[A-Za-z]{3}-Week\d{1}.log

Example matches...

  • 2010-Feb-Week4.log
  • 2009-Dec-Week2.log
  • 1234-aBc-Week0.log

Between Parentheses

(?<=\[)(.*?)(?=\])

Matches everything between [ and ], so for example...

  • VMFS_SCSI_DS_01 is matched from [VMFS_SCSI_DS_01] My_VM/MyVM.vmdk

Its essentially done via three chunks of the regex...

  1. (?<=\[)
    • Requires that [ immediately proceeds the match
  2. (.*?)
    • Matches everything
  3. (?=\])
    • Requires that [ immediately follows the match

VMHBA LUN ID

(?<=:)([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$

Finds a number between 0 and 255 immediately after a : at the end of a line, specifically intended to get the LUN ID from a VMware canonical path, so for example...

  • 13 is matched from vmhba3:0:13

Stepping through the regex...

  1. (?<=:)
    • Requires that  : immediately proceeds the match
  2. ([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])
    • Matches any number between 0 and 255
  3. $
    • Ensures that the proceeding match occurs at the end of a line