-
Posts
543 -
Joined
-
Last visited
Recent Profile Visitors
637 profile views
Kyan's Achievements
-
Cristia reacted to a post in a topic: hash file with progressbar
-
Xandy reacted to a post in a topic: Can I get data from balloon tip ?
-
Open file menu while script in progress.
Kyan replied to DigDeep's topic in AutoIt General Help and Support
When you're inside another loop than the main loop (the one that receives user inputs from your gui) you can't get those inputs, to circumvent that issue you have to use events, what I usually do is this: #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $Flag = 1 #Region ### START Koda GUI section ### Form= $Form1_1 = GUICreate("TEST", 202, 65, 192, 124) $Button1 = GUICtrlCreateButton("Button", 64, 32, 75, 25) $Checkbox1 = GUICtrlCreateCheckbox("OnEvent", 120, 8, 65, 17) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ### While 1 If GUICtrlRead($Checkbox1) = $GUI_CHECKED And $Flag Then LOOP() $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 MsgBox(64,"MSG","NORMAL") EndSwitch WEnd Func LOOP() $Flag = 0 Opt("GUIOnEventMode",1) GUISetOnEvent($GUI_EVENT_CLOSE,"_exit") GUICtrlSetOnEvent($Button1,"Button1") GUICtrlSetOnEvent($Checkbox1,"checkbox") While 1 Sleep(20) If $Flag Then ExitLoop WEnd Opt("GUIOnEventMode",0) EndFunc Func Button1() MsgBox(64,"MSG","I'm inside a LOOP") EndFunc Func _exit() Exit EndFunc Func checkbox() $Flag = 1 EndFunc -
Is the requested data splited in parts, you just have to merge them. https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2
-
Hi, I'm trying to get the language tags (pt_pt, en_gb,...) and their data "ALLWORK" in this case, why isn't it working? $aPreDATA = '<div data-type="inputText" name="title" data-multilang data-legend="Título" data-force><pt_pt>ALLWORK</pt_pt><en_gb>ALLWORK</en_gb><fr_fr>ALLWORK</fr_fr><de_de>ALLWORK</de_de></div>' $atitle = StringRegExp($aPreDATA,'(?i)<div data-type="inputText" name="title".*?>(?:<(\w{2}_\w{2})>(.+?)</\g-1>)+?</div>',3) _ArrayDisplay($atitle) Also tried this and no luck $aPreDATA = '<div data-type="inputText" name="title" data-multilang data-legend="Título" data-force><pt_pt>ALLWORK</pt_pt><en_gb>ALLWORK</en_gb><fr_fr>ALLWORK</fr_fr><de_de>ALLWORK</de_de></div>' $atitle0 = StringRegExp($aPreDATA,'(?i)<div data-type="inputText" name="title".*?>(.+?)</div>',3) $atitle = StringRegExp($atitle0,'(?i)<(\w{2}_\w{2})>(.*?)</',3) Thanks in advance
-
Expected Match: ISO/IEC 11770-2:2008/Cor.1:2009(E) Expected Output: ISO/IEC 11770-2:2009(E) #1 GlobalMatch Mode: (?i)((?:bs )?(?:en )?(?:np )?(?:is[o0]|DIN)\V{1,10}[-\d]+)(.+:)?(\d{4}(?:\(\w\))?) output: #2 On global match (3), greedy match: (?i)((?:bs )?(?:en )?(?:np )?(?:is[o0]|DIN)\V{1,10}[-\d]+)(.*:)?(\d{4}(?:\(\w\))?) Same regexp PHP match (2): Row|Col 0 [0]|ISO/IEC 11770-2:2008 [1]|ISO/IEC 11770-2 [2]|: [3]|2008 The thing is that it never outputs the same number of rows. The only possibility I see is to use to output: $a[ubound($a)-3]&$a[ubound($a)-1] to always output the "Expected Output". #1 and #2 end up with the same matches (using in the first the "+" and in the last "*") The things change when I only use "*": (?i)((?:bs )?(?:en )?(?:np )?(?:is[o0]|DIN)\V{1,10}[-\d]*)(.*:)?(\d{4}(?:\(\w\))?) Global Matches (3): PHP Match:
-
so using .* would only match the last one? (I thought that quantifier matches 0 or more times)
-
thank you @jchd! I made it to match other standards than ISO (DIN) and the letter between parenthesis isn't always a (E), that's a revision letter, so I placed a \w instead of "e" https://regex101.com/r/jezYus/3
-
First of all, thanks to all of you for helping me out. @jchd wow, great website, so your proposal is to match them in groups then use StringRegExpReplace to place them correctly? Can you give me a advice how should I include other standards variants in the first capture group? There're BS EN ISO... EN ISO.., EN NP ISO...and sometimes my OCR fails and translates ISO to IS0 so I tried with this but doesn't look good: ((?:BS\h+)?(?:EN\h+)?(?:NP\h+)?IS[0o]) @InunoTaishou don't be confused, because that's a correct input-output
-
yes, but that changes how I was capturing strings previously, I was outputting one liners with these (using StringRegExp flag 2): BS( EN ISO)?.+?[\d-]+:[\d-]+(\(\w\))?|DIN.+?[\d-]+:[\d-]+(\(\w\))?|EN\s+?NP\s+?ISO.+?[\d-]+?:[\d-]+(\(\w\))?|EN\s+?ISO.+?[\d-]+:[\d-]+(\(\w\))?|ISO.+?[\d-]+:[\d-]+(\(\w\))? the thing is that I found those "Amd..." that I only wanted the year preceeded by "Amd.\d:" Sorry if this is kinda complicated, but it's kinda hard to understand how a non capturing group is captured.
-
With stringregexpreplace works fine, but why can't (?:) work properly? $text="ISO 11784:1996/Amd.2:2010(E)|ISO 11784:1996/Amd.1:2007|ISO 11784-1-2:1989(B)" $aText = StringSplit($text,"|") For $x In $aText $l = StringRegExp($x,'(?i)iso\s+\d+:(?:\d{4}.+?amd.+?\:)\d{4}(?:\(\w\))?',2) If Not @error Then ConsoleWrite($l[0]&@LF) Next outputs: ISO 11784:1996/Amd.2:2010(E) ISO 11784:1996/Amd.1:2007 EDIT: This one also doesn't work, is a zero width look behind $text="ISO 11784:1996/Amd.2:2010(E)|ISO 11784:1996/Amd.1:2007|ISO 11784-1-2:1989(B)" $aText = StringSplit($text,"|") For $x In $aText $l = StringRegExp($x,'(?i)iso\s+[-\d]+:(?<=\d{4}.+?amd.+?\:)?\d{4}(?:\(\w\))?',2) If Not @error Then ConsoleWrite($l[0]&@LF) Next @Melba23 I need your expertise pls
-
Already said what they are but there it goes an example Inputs: ISO 11784:1996/Amd.2:2010(E) ISO 11784:1996/Amd.1:2007 ISO 11784-1-2:1989(B) Outputs: ISO 11784:2010(E) ISO 11784:2007 ISO 11784-1-2:1989(B)
-
Hey mikell Can't be done with the regular expression? I could do that, I do that to remove multiple consecutive spaces after capturing it (?i)iso\s+\d+:(?:\d{4}.+amd.+:)?\d{4}(?:\(e\))? This one also doesn't work, it displays 1996
-
Hi jchd, It doesn't work, outputs: Row|Col 0 [0]|ISO 11784:1996(E) [1]|ISO 11784: [2]| [3]|1996(E) on the line [0] should have outputted: ISO 11784:2010(E) there's also standards with hyphens: ISO 11412-2-1:2001, that's why I used a class
-
Hey everyone I'm stuck with this regular expression, for matching a iso standard version what I want to do is match the text in green: ISO 11784:1996/Amd.2:2010(E) there is also others that look like this: ISO 11789:1999(E), and without the (E) part, Só I did this one (?i)ISO.+?[\d-]+:(?:\d+/Amd.+?:)?[\d-]+(?:\(\w\))* to match both cases but doesn't ignore the text in red Can somebody point out what I'm doing wrong here?
-
Kyan reacted to a post in a topic: _ArrayToXLS() - save 1D/2D array to XLS without installed Excel
-
Does Excel UDF requeries you to have MS Excel installed?
Kyan replied to Kyan's topic in AutoIt General Help and Support
Thank you so much zedna, that's really helpful