Sign in to follow this  
Followers 0
evorlet

simple string expression problem

7 posts in this topic

#1 ·  Posted (edited)

Hi everyone, im new to autoit and i've just had a problem about string parsing, i dont know how to use the '[...]' together with a group of characters. here's my code :

I want to retrieve the name of the street, there're the words "st ,rd, ave, circ..." after the names of the streets. So i'll get the string before those words:

Global $address = StringRegExp('540 HOWARD AVE, SAINT JOSEPH', '(.*?)[(ST)(RD)(AVE)]',1)
msgbox(0,"",$address[0])

The problem is in the part [(ST)(RD)(AVE)] , but i cant figure out any other way to this expression

Please help :D

Edited by evorlet

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

evorlet,

Welcome to the AutoIt forum. :D

This works for me: :)

#include <array.au3>

$sList = "540 TOM  AVE, SAINT JOSEPH" & @CRLF & _
         "725 DICK ST, ST ARTHUR" & @CRLF & _
         "34 HARRY RD, NEMPNETT"

$aRet = StringRegExp($sList, "(?U)(?:d+x20)(.+)(?:x20[AVE|RD|ST])", 3)

_ArrayDisplay($aRet)

SRE expanation:

(?U)                - Look for the shortest match
(?:d+x20)         - Look for, but do not capture, several digits followed by a space
(.+)                - Capture all the characters until...
(?:x20[AVE|RD|ST]) - You find a space followed by AVE, RD or ST, which is not captured

All clear? :oops:

M23

Edit: See below for better versions. :rip:

Edited by Melba23

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

#3 ·  Posted (edited)

Sorry to pick you up Melba,

[AVE|RD|ST] should be (?:AVE|RD|ST)

| has no special meaning inside [...] sets, so I imagine you are only actually matching one character.

Edited by Mat

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

Mat,

Good spot - I get caught out by that quite often. :D

But now I find you need to separate the second space like this: :rip:

(?U)(?:d+x20)(.+)(?:x20)(?:AVE|RD|ST)

Unless you know of a way to keep the 2 parts together? :oops:

M23

P.S. And please do not feel the need to apologise - if I am wrong I am wrong (as I often am)! :)

Edited by Melba23

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... You could simplify it a bit as there are some non-matching groups that could just be removed, and x20 is space:

d+s(.+?)s(?:AVE|RD|ST)

That's how I'd write it anyway. I guess it's down to personal preference.

Share this post


Link to post
Share on other sites

Mat,

personal preference

So true when it comes to SREs. :oops:

Have a good day. :D

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

Thanks you very much guys, all your methods worked out very well. I'd like all your post if i could :D

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