use strict;
my $str = '
${DISPLAY_LINE1} 0 #TARIFF Display
${DISPLAY_LINE2} 1 #EXTRAS Display
${DISPLAY_LINE3} 2 #FARE Display
@{TEST_SCREENS_WITH_TIMEOUT} ShowDesc ShowOsAndCountryCode ShowSW ShowSerial
... Checksum_PPSU Checksum_BPSU Checksum_LPSU Checksum_GPSU Checksum_AEPS Checksum_FEPS Checksum_GPAR
... Datetime_Clock Datetime_DDMM Datetime_Year
... ShowHWRevBaseboard ShowHWRevSOM Digio LVTL_Info
... TestMeasure_WDZ TestMeasure_SEC TestMeasure_MET TestMeasure_SPD
@{TEST_SCREENS_WITHOUT_TIMEOUT} DisplayTest DisplaySettings Temperature
@{CHECKSUM_SCREENS} Checksum_PPSU Checksum_BPSU Checksum_LPSU
*** Keywords ***
Program Version contain
[Documentation] Read out program version and compare it with ${PROGARMM_VERSION}
... Comparison is done with "Should Contain" which is equal to Pythons "in" operator,
... it checks if ${PROGARMM_VERSION} is a substring of display content.
... Examples: Display content is "P.ITM30"
... Should Contain P.ITM30 ITM30 => PASS
... Should Contain P.ITM30 ITM => PASS
... Should Contain P.ITM30 I => PASS
... Should Contain P.ITM30 ITM40 => FAIL
[Arguments] ${PROGARMM_VERSION}
Fail if not on measure mode screen ShowOsAndCountryCode
@{disp} = Read display in measure mode
Should Contain @{disp}[${DISPLAY_LINE3}] ${PROGARMM_VERSION} Program version not found: ${PROGARMM_VERSION}
Tarif EPS is
[Documentation] Read out tarif EPS and compare it with ${TARIF_EPS}
... Comparison is done with "Should be equal"
[Arguments] ${TARIF_EPS}
Fail if not on measure mode screen Checksum_AEPS
@{disp} = Read display in measure mode
${disp_traf_eps} = Catenate SEPARATOR= @{disp}[${DISPLAY_LINE1}] @{disp}[${DISPLAY_LINE3}]
${disp_traf_eps} = Replace String ${disp_traf_eps} . ${EMPTY}
Should be equal ${disp_traf_eps} ${TARIF_EPS} Tarif EPS is not equal
Release Date contain
[Documentation] Read out program version and compare it with ${RELEASE_DATE}
... Comparison is done with "Should Contain" which is equal to Pythons "in" operator.
... For more information about the in-operator read Program Version contain - Keyword
[Arguments] ${RELEASE_DATE}
Fail if not on measure mode screen ShowSW
@{disp} = Read display in measure mode
Should Contain @{disp}[${DISPLAY_LINE3}] ${RELEASE_DATE} Release date not found: ${PROGRAM_VERSION}
Checksum is not blinking
[Documentation] Check if checksums displayed in MEASURE MODE does blinking
[Arguments] ${CHECKSUM_SCREEN}
Fail if not on measure mode screen ${CHECKSUM_SCREEN}
';
my $regex = qr/^\s{1,}\[Documentation]\s*(.*)$|^\s{1,}\.{3}\s*(.*)$/mp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html