Simucal Posted April 26, 2006 Share Posted April 26, 2006 (edited) Ok.. so I'm starting to get a basic hang on stringregexp's. However, I have a situation where my StringRegExp will sometimes produce one word for an array entry and sometimes two. Example: [0] = "Sunny" [1] = "Partly Cloudy" [2] = "Rainfall" [3] = "Very cloudy" Is the result of my StringRegExp: $DescArray = StringRegExp($10DayFile, '(?:"padding:0px 3px 0px 0px;">)([a-zA-Z]*\s?[a-zA-Z]*?)(?:</TD>)',3) This all works great. However, what I would LIKE to do is: For whatever entries have two words, replace the space that seperates them with an @CRLF. StringRegExpReplace ( "test", "pattern", "replace", [ count ]) I've thought about doing a StringRegExpReplace, but I'm a little hazy on how I would setup up the "replace" field of the function. I think I will need to use \1-\9 to insert my matched group. StringRegExpReplace($10DayFile, '(?:"padding:0px 3px 0px 0px;">)([a-zA-Z]*\s?[a-zA-Z]*?)(?:</TD>)',StringReplace(\2," ",@CRLF),0) However, StringReplace will not take the \2 to refer to the second matched group. I'd like to stick with StringRegReplace/StringReg's and not do any combersome loops. Thanks, -Sim EDIT: As a work around.. I StringReplace each member of the array.. but I wanted to see how else it could be done. Edited April 26, 2006 by Simucal AutoIt Scripts:Aimbot: Proof of Concept - PixelSearching Aimbot with several search/autoshoot/lock-on techniques.Sliding Toolbar - Add a nice Sliding Toolbar to your next script. Click the link to see an animation of it in action!FontInfo UDF - Get list of system fonts, or search to see if a particular font is installed.Get Extended Property UDF - Retrieve a files extended properties (e.g., video/image dimensions, file version, bitrate of song/video, etc) Link to comment Share on other sites More sharing options...
neogia Posted April 26, 2006 Share Posted April 26, 2006 $DescArray = StringRegExp($10DayFile, '(?:"padding:0px 3px 0px 0px;">)([a-zA-Z]*\s?[a-zA-Z]*?)(?:</TD>)',3) StringRegExpReplace($10DayFile, '(?:"padding:0px 3px 0px 0px;">)([a-zA-Z]*)\s?([a-zA-Z]*?)(?:</TD>)',',0) You can try this: StringRegExp(StringRegExpReplace($10DayFile, '(?:"padding:0px 3px 0px 0px;">)([a-zA-Z]*)\s?([a-zA-Z]*?)(?:</TD>)', '\1' & @CRLF & '\2', 0), '(?:"padding:0px 3px 0px 0px;">)([a-zA-Z]\r\n[a-zA-Z]*?)(?:</TD>)',3) Untested... could you post the file you are trying to parse? [u]My UDFs[/u]Coroutine Multithreading UDF LibraryStringRegExp GuideRandom EncryptorArrayToDisplayString"The Brain, expecting disaster, fails to find the obvious solution." -- neogia Link to comment Share on other sites More sharing options...
jvanegmond Posted April 26, 2006 Share Posted April 26, 2006 (edited) This may be a dumb question: but why not do this? $string = "Rainfall" $check = StringSplit ( $string , " " ) If $check[0] = 2 Then MsgBox(0, "", $check[1] & @CRLF & $check[2]) Else MsgBox(0, "", $string) EndIf $string = "Very cloudy" $check = StringSplit ( $string , " " ) If $check[0] = 2 Then MsgBox(0, "", $check[1] & @CRLF & $check[2]) Else MsgBox(0, "", $string) EndIf $string = "Very cloudy indeed" $check = StringSplit ( $string , " " ) If $check[0] = 2 Then MsgBox(0, "", $check[1] & @CRLF & $check[2]) Else MsgBox(0, "", $string) EndIf [edit] The code makes a lot more sence now Edited April 26, 2006 by Manadar github.com/jvanegmond Link to comment Share on other sites More sharing options...
Simucal Posted April 26, 2006 Author Share Posted April 26, 2006 (edited) Because I would need to do that for each member of the array and it is clunky. If I can do it with one stringregexpreplace, then it is a better solution. I'm already doing a: StringReplace($DescArray[0], " ", @CRLF) Edited April 26, 2006 by Simucal AutoIt Scripts:Aimbot: Proof of Concept - PixelSearching Aimbot with several search/autoshoot/lock-on techniques.Sliding Toolbar - Add a nice Sliding Toolbar to your next script. Click the link to see an animation of it in action!FontInfo UDF - Get list of system fonts, or search to see if a particular font is installed.Get Extended Property UDF - Retrieve a files extended properties (e.g., video/image dimensions, file version, bitrate of song/video, etc) Link to comment Share on other sites More sharing options...
neogia Posted April 26, 2006 Share Posted April 26, 2006 Ah, having the source to parse makes it alot easier, here's the one-liner version, returns an array: #include <array.au3> $ret = StringRegExp(StringRegExpReplace($10DayFile, '(?:"padding:0px 3px 0px 0px;">)([a-zA-Z]*)\s*?([a-zA-Z]*?)(?:</TD>)', '~~\1' & @CRLF & '\2~~', 0), '~~(.*?)~~',3) _ArrayDisplay($ret, "") [u]My UDFs[/u]Coroutine Multithreading UDF LibraryStringRegExp GuideRandom EncryptorArrayToDisplayString"The Brain, expecting disaster, fails to find the obvious solution." -- neogia Link to comment Share on other sites More sharing options...
neogia Posted April 26, 2006 Share Posted April 26, 2006 The previous one didn't handle one word descriptions, this one does: #include <Array.au3> $ret = StringRegExp(StringRegExpReplace($10DayFile, '(?:"padding:0px 3px 0px 0px;">)([a-zA-Z]*?)(?:\s*?)([a-zA-Z]*?)(?:</TD>)', '~~\1' & @CRLF & '\2~~', 0), '~~(.*?)~~|"padding:0px 3px 0px 0px;">(.*?)</TD>',3) _ArrayDisplay($ret, "") [u]My UDFs[/u]Coroutine Multithreading UDF LibraryStringRegExp GuideRandom EncryptorArrayToDisplayString"The Brain, expecting disaster, fails to find the obvious solution." -- neogia Link to comment Share on other sites More sharing options...
Simucal Posted April 26, 2006 Author Share Posted April 26, 2006 Wow Neogia, you went above and beyond what I expected. That is exactly what im looking for!! Many thanks! Also, I'll be looking for the update on your StringRegExp tutorial. -Sim AutoIt Scripts:Aimbot: Proof of Concept - PixelSearching Aimbot with several search/autoshoot/lock-on techniques.Sliding Toolbar - Add a nice Sliding Toolbar to your next script. Click the link to see an animation of it in action!FontInfo UDF - Get list of system fonts, or search to see if a particular font is installed.Get Extended Property UDF - Retrieve a files extended properties (e.g., video/image dimensions, file version, bitrate of song/video, etc) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now