Sign in to follow this  
Followers 0
PowerCat

StringRegExp woes

4 posts in this topic

#1 ·  Posted (edited)

I've made a RegExp string in RegExpQuickTester and it works fine, but as soon as I put that string with StringRegExp, it sets @error to 1.

I want to get the number "1" that's listed between <td nowrap="nowrap" align="center"> and </td><td>

One of the challenge is that the web page is formatted strangely, following the 'align="center">' is 1 carriage return, and 4 TABs.

After the number and before the number, there are 4 TABs.

Here is the code:

#include <array.au3>

$string ="<TD noWrap align=middle>1 </TD><TD noWrap align=middle>1 </TD><TD noWrap align=middle>1 </TD>"

$number = StringRegExp($string, '(?i)</td><td nowrap="nowrap" align="center">(?:\s+)(\d*)(?:\s+)</td><td>', 3)

Why does it work in the regexptester but not while using autoit??

Thanks.

Edited by PowerCat

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Have you tried _StringBetween()?

Edit: I know this was a stupid question, the answer is technically in your OP! But if you don't ask you'll never know.

Edited by guinness

_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 04/09/2015

Share this post


Link to post
Share on other sites

PowerCat.

If we look at your original string (before you edited it) you were looking for the wrong type of quote - which is why you got no matches. If you use the correct form of quote then you get all the values:

#include <array.au3>

$string = "<a class='linkAction' onclick='__doPostBack('@@@@@Edit', '772')'>AdobeFlash Player-10.0.12.36-Corp-EN</a>            " & _
        "</td><td nowrap='nowrap' align='center'>                1           </td><td>Superseded</td><td align='left'>               <a class='linkAction' onclick='__doPostBack('@@@@@Edit', '952')'>AdobeFlash Player-10.0.22.87-Corp-EN</a>           " & _
        "</td><td nowrap='nowrap' align='center'>                1           </td><td>Superseded</td><td align='left'>               <a class='linkAction' onclick='__doPostBack('@@@@@Edit', '1209')'>AdobeFlash Player-10.0.32.18-Corp-EN</a>          " & _
        "</td><td nowrap='nowrap' align='center'>                1           </td><td>Retired</td><td align='left'>              <a class='linkAction' onclick='__doPostBack('@@@@@Edit', '1356')'>AdobeFlash Player-10.0.42.34-Corp-EN</a>          " & _
        "</td><td nowrap='nowrap' align='center'>                1           </td><td>Retired</td><td align='left'>"

$number = StringRegExp(StringStripWS($string, 8), "(?U)'center'>(.*)</td><td>", 3)

_ArrayDisplay($number)

You were using " in the pattern where the string used '. :>

As for the current post - why should it work? The pattern does not appear in the string at all! :unsure:

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Well I did some further troubleshooting and the page was different when pasted than when read through AutoIT.

This did it:

StringRegExp($oHTML, '(?i)<TD noWrap align=middle>(\d*) </td>', 3)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0