7 posts in this topic
I need a little bit help from some RegEx experts please:
I would make my ISN AutoIt Studio faster when generating the scripttree. And what would be better to do this via regex?
Problem is i am not really good at this regex stuff. So maybe someone could help me here.
The challange is to get all Global Variables from a script via RegEx in a Array.
Here is a example script with some tests:
Global $Var1 = 1234 Local $Local_Var = 1234 $Ignore_me_too = 1234 Global $Var2 = 1234, $var3 = 1242 Global $ahIcons, $ahLabels Global Const $Var4 = iniread($inivar1,"jj","jj","") , $var5= iniread($inivar2,"jj","jj","") Global $Var_String = "was" Global $Array_Test = [1,15,16,0,31,15,25,15,25,30,8,30,8,15,1,15] Global Enum $MARGIN_SCRIPT_NUMBER = 0, $MARGIN_SCRIPT_ICON, $MARGIN_SCRIPT_FOLD Global Const $Delim = '\', $Delim1 = '|' Global $hard1 = "a", _ $hard2 = "b", _ $hard3 = "c"
The returning array should look like this:
$Var1 $Var2 $var3 $Var4 $var5 $Var_String $Array_Test $MARGIN_SCRIPT_NUMBER $MARGIN_SCRIPT_ICON $MARGIN_SCRIPT_FOLD $Delim $Delim1 $hard1 $hard2 $hard3
I already made some success with a expression i found in the SciTE Jump Tool: (\$\w+)(?:[\h\[.=+*/^,)\-])?
This nearly returns the perfect results. But it does not check if it´s a global variable (with the const and enum options) and also returns variables in commands (for example $inivar1)
I also found this regex: (?im:^(?=Global|Const|Enum|Static)(?:Global)?\h*(?:Const|Enum|Static)?(?:(?<=Enum)\h+Step\h+[+*-]\d+)?\h*)([^\r\n .\=]+)
This returns also usefull results...but trying to understand this explodes my head
Maybe someone can help me here?
Thanks in advance!
I can not do anything with any user in the "Local Users Group"
I tried from my account but I could not change my password (ie set new password)!
But I was able to activate the Administrator account and I logged into the Administrator account and still could not do anything with my account! But I can set the password and disable the Administrator account from my account or Administrator.
Any ideas? (Ignore the click on the Sign-in option in the Change Accout settings.)
Can anyone tell me why this isn't working?..
#include <array.au3> $regexp = StringRegExp("test 'a b c'", "'([^']|'')*'|\S+", 3) _ArrayDisplay($regexp) trying to split this "test 'a b c' 'some other '' test'' ...'" into:
1: 'a b c'
but it gives me:
I am pretty bad with regex, and am having some trouble trying to come up with an expression for a certain type of string. Basically I want to be able to tell if a string is of the format:
Where the A's are any letter from A-Z and the #'s are any digit from 0-9.
I've been playing around with a regex tester online for a while but I can't really seem to grasp the concept very well. Could anyone give me any tips?
This isn't exactly an AutoIt specific question which is why I didn't post it in General Help & Support.
I'm a command-line kind of guy, and I write scripts primarily for myself. Since many websites nowadays require strong passwords, I thought I'd write a simple password generator in AutoIt. I know that AutoIt mavens have written more elaborate pw generators; I offer mine for what it's worth. The compiled script, GenPass.exe, can be downloaded here. See below for Help text and source. Enjoy!
2017-05-06: Default password changed to variable length of 13-22 characters; argument "1" no longer supported
When compiled as GenPW.exe, password is sent directly to the clipboard, no message box unless password generation fails.
2017-05-05: Correction to bypass password generation if argument is ?|H|h
2017-05-03: Added special argument 1 to generate a password of variable length (10-18 characters) including two (2) separator characters
2017-05-02: Added option /S to set a (persistent) randomization seed
GenPass.exe|GenPW.exe -- CLD rev. 2017-05-06
Generate a strong password and save it to the Windows clipboard
Note: GenPW.exe has the same functionality as GenPass.exe, but
sends the generated password directly to the clipboard.
No message box is displayed (unless password generation fails).
"Strong" means that the password contains random combinations of
alphnumeric characters, including at least one uppercase letter
(A-N,P-Z), one lowercase letter (a-k,m-z), and one number (0-9).
(Generated passwords do not use uppercase O or lowercase l as
these characters are easily confused with the numbers 0 and 1.)
The length of the password is up to you (see Usage, below),
but needless to say, the longer, the stronger.
By default, GenPass generates a strong password of between 13
and 22 characters that includes two of the following separator
characters: $%&()*+,-./:;@_. Alternatively, you can supply a
command-line argument in which any number n from 1 to 9 stands
for a random sequence of alphanumeric characters of length
n, and any other character stands for itself. Thus, you can
include fixed words and other characters, such as separators,
in the generated password. Spaces in the argument are converted
to underscores. Here are some examples:
Usage Sample output
GenPass 9 frdhPYDs9
GenPass 58 weoXYHKxDI1uQ
GenPass 5.5 UfA6j.43VBB
GenPass 3-4-3 0I0-6gq4-njc
GenPass 5,3.7 I2FSR,tRZ.fjeIsFy
GenPass 3)5(3 UMf)m8513(CBq
GenPass 3[haha]3 yLa[haha]P3y
GenPass Yes way5 Yes_way1BsUh
Seed Option (/S)
Adding switch /S to the command-line argument causes GenPass to
set a seed for the random generation of password characters. A
bare /S sets a randomized seed which is written to disk in a file
named GenPass.rnd; this seed is used for all subsequent launches
of GenPass with the bare /S option. Alternatively, you can specify
a seed (range -2^31 to 2^31-1) on the command line with /S [seed].
Here are some examples:
GenPass /S 33.3333
GenPass 5,5,5 /S
GenPass 5,5,5 /S 33.3333
Note that any subsequent launch of GenPass without the /S option
will cause GenPass.rnd to be deleted.
#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=GenPass.exe #AutoIt3Wrapper_UseUpx=y #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #cs GENPASS.AU3 -- AutoIt v3 CLD rev.2017-05-05 ------------------ Generate a strong password and save it to the clipboard >> Command GenPass ? for detailed help << ------------------------------------------------------- #ce #include <Clipboard.au3> #include <FileConstants.au3> #include <MsgBoxConstants.au3> #include <StringConstants.au3> AutoItSetOption("WinTitleMatchMode", -4) FileInstall ("d:\path\GenPass.htm", @ScriptDir & "\GenPass.htm", $FC_OVERWRITE) ; Template/Seed Local $sTemp = "" Local $bSeed = False, $fSeed=False If $CmdLine Then $sTemp = $CmdLineRaw If $CmdLine[$CmdLine] = "/s" Then $bSeed = True $sTemp = StringTrimRight($sTemp, 2) $sTemp = StringStripWS($sTemp, $STR_STRIPTRAILING) EndIf If $CmdLine[$CmdLine - 1] = "/s" Then $bSeed = True $fSeed = $CmdLine[$CmdLine] $sTemp = StringTrimRight($sTemp, 3 + StringLen($fSeed)) $sTemp = StringStripWS($sTemp, $STR_STRIPTRAILING) EndIf EndIf If Not $sTemp Then $sTemp = "8" If $sTemp = "1" Then $aSeps = StringSplit("#$%&()*+,-./:;@_", "") $sTemp = String(Random(3,6,1)) & $aSeps[Random(1,$aSeps,1)] & _ String(Random(2,4,1)) & $aSeps[Random(1,$aSeps,1)] & _ String(Random(3,6,1)) EndIf $sFn = @ScriptDir&"\GenPass.rnd" If $bSeed Then If Not $fSeed Then If Not FileExists($sFn) Then $fSeed = Random(-1.999^31,1.999^31,0) $h=FileOpen($sFn,2) If $h > -1 Then FileWrite($h,$fSeed) FileClose($h) Else Exit MsgBox($MB_ICONWARNING, @ScriptName, "Error opening " & $sFn) EndIf Else $h=FileOpen($sFn) If $h > -1 Then $fSeed=FileRead($h) FileClose($h) Else Exit MsgBox($MB_ICONWARNING, @ScriptName, "Error opening " & $sFn) EndIf EndIf EndIf SRandom($fSeed) Else If FileExists($sFn) Then FileDelete($sFn) EndIf ; Show help If StringInStr("?Hh", $sTemp) Then If WinExists("[REGEXPTITLE:GenPass.exe:.*]") Then WinActivate("[REGEXPTITLE:GenPass.exe:.*]") Else ShellExecute(@ScriptDir & "\GenPass.htm") EndIf Exit EndIf ; Main $sTemp = StringReplace($sTemp, " ", "_") $iC = 1 While $iC < 10001 $sPW = GenPW($sTemp) If $sPW Then ClipPut($sPW) If Not StringInStr (@ScriptName, "GenPW") Then _ MsgBox($MB_ICONINFORMATION, @ScriptName, $sPW & _ " saved to clipboard" & @CRLF & @CRLF & _ @ScriptName & " ? shows detailed help") Exit Else $iC += 1 EndIf WEnd Exit MsgBox($MB_ICONWARNING, @ScriptName, "Password generation failed!") ;------------------------------- Func GenPw($sTemplate) Local $aIn = StringSplit($sTemplate,"") Local $sOut = "" Local $sABC = _ "0123456789ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz0123456789" Local $aAB = StringSplit($sABC, "") Local $bUC = 0, $bLC = 0, $bNR = 0 For $i = 1 To $aIn If Int($aIn[$i]) Then $iK = $aIn[$i] For $j = 1 To $iK $iR = Random(1, $aAB,1) Select Case StringInStr("0123456789", $aAB[$iR]) $bNR = 1 Case StringInStr("ABCDEFGHIJKLMNPQRSTUVWXYZ", _ $aAB[$iR], $STR_CASESENSE) $bUC = 1 Case StringInStr("abcdefghijklmnpqrstuvwxyz", _ $aAB[$iR], $STR_CASESENSE) $bLC = 1 EndSelect $sOut &= $aAB[$iR] Next Else $sOut &= $aIn[$i] EndIf Next If ($bUC And $bLC And $bNR) Then Return $sOut Else Return 0 EndIf EndFunc