use strict;
my $str = '--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
on padR(pSourceStr, pTotalLen, pPadStr) -- @Strings @Pad
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(*
Ver: 1.0 2017-01-30
PURPOSE: Return String Padded RIGHT from String or Number
*)
set paddedStr to current application\'s NSString\'s stringWithString:(pSourceStr as text)
set paddedStr to paddedStr\'s stringByPaddingToLength:(pTotalLen) withString:pPadStr startingAtIndex:0
return paddedStr as text
end padR
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
on padL(pSourceStr, pTotalLen, pPadStr) -- @Strings @Pad
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(*
Ver: 1.0 2017-01-30
PURPOSE: Return String Padded LEFT from String or Number
*)
set sourceLen to length of (pSourceStr as text)
--- CREATE NS STRING ---
set padToAddNSStr to current application\'s NSString\'s |string|()
--- ADD PAD TO FILL ---
set padToAddNSStr to padToAddNSStr\'s stringByPaddingToLength:(pTotalLen - sourceLen) withString:pPadStr startingAtIndex:0
--- CREATE THE PAD LEFT STRING ---
set paddedStr to (padToAddNSStr as text) & pSourceStr
return paddedStr as text
end padL
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
on getUniqueTagNames(pTagObjectList) -- @EN @Tags @List @Merge
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(*
Ver: 1.0 2017-01-30
PURPOSE: Return String Padded LEFT from String or Number
# pTagObjectList -- list of list of EN Tag Objects
# RETURNS -- single list of unique Tag Names
*)
local tagListStr, taagList, oTag
--- MERGE TAGS AS TEXT ---
set tagListStr to {}
tell application "Evernote"
repeat with tagList in pTagObjectList
repeat with oTag in tagList
set tagstr to name of oTag
if tagListStr does not contain tagstr then set end of tagListStr to tagstr
end repeat
end repeat
end tell -- "Evernote"
return tagListStr -- single list of unique Tag Names
end getUniqueTagNames
--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
';
my $regex = qr/^on ([^\(].+?)\((.*?)\) -- (.+?)\n.*?\(\*(.+?)\*\)/imsp;
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