Jump to content

Extract first match between two delimeters


Go to solution Solved by NDog,

Recommended Posts

Posted (edited)

I have some values

x64\3\Cardreaders\VIA\WIN7\x64
x64\Win8\L\Realtek\2\Win8
Gaming_x64_812\1\1

I want to return only the first match between the characters, using StringRegExpReplace, because I have further questions regarding this.

3
Win8
1

I have tried (.*?) however I only need the first match. Also I do not need to create an array.

$string = "Gaming_x64_812\1\1"
$match = StringRegExpReplace($string, "\\(.*?)\\")
ConsoleWrite("$match: "&$match&@CRLF)

http://www.rubular.com/r/3cc4bOeo29

Edited by NDog
Posted (edited)

Not sure what you are using this for, but I'd just use StringSplit and use the second value.

$value = StringSplit("x643CardreadersVIAWIN7x64", "")

$result = $value[2]

Edited by TheSaint

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

  Reveal hidden contents

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

Posted (edited)

maybe this:
 

(?i).*?\\(.*?)\\.*

EDIT:

I see someone was faster i mean @Malkey  :)

Edited by mlipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

Posted (edited)
  On 9/9/2013 at 11:31 AM, TheSaint said:

Not sure what you are using this for, but I'd just use StringSplit and use the second value.

$value = StringSplit("x643CardreadersVIAWIN7x64", "")

$result = $value[2]

 

Thank you, however some strings are a bit more complex, and I also need to do another comparison, which will be the last match between the characters, eg

x64\3\Cardreaders\VIA\WIN7\x64
x64\Win8\L\Realtek\2\Win8
Gaming_x64_812\1\1

Where I would want to return

WIN7
2
1

So I thought asking about a stringregexpression would be useful for learning, how to do this.

Thanks for your help everyone so far. I am nearly there.

Kind regards

Edited by NDog
Posted
  On 9/9/2013 at 12:11 PM, NDog said:

Thank you, however some strings are a bit more complex, and I also need to do another comparison, which will be the last match between the characters, eg

x64\3\Cardreaders\VIA\WIN7\x64
x64\Win8\L\Realtek\2\Win8
Gaming_x64_812\1\1

Where I would want to return

WIN7
2
1

 

Just remove the first ? in Malkey's example and you will get the last match.

Local $match = StringRegExpReplace($string, ".*\\(.+?)\\.*", "\1")
  • Solution
Posted

Local $string = "x64\3\Cardreaders\VIA\WIN7\x64" & @CRLF & _
        "x64\Win8\L\Realtek\2\Win8" & @CRLF & _
        "Gaming_x64_812\1\1" & @CRLF & _
        "Gaming_x64_812\HI\hey\1234444\1"


Local $match = StringRegExpReplace($string, ".*?\\(.+?)\\.*", "\1")     
ConsoleWrite("first $match:- " & @CRLF & $match & @CRLF& @CRLF)     

Local $match = StringRegExpReplace($string, ".*\\(.*?)\\.*", "\1")      
ConsoleWrite("second $match:- " & @CRLF & $match & @CRLF)

Great, thanks for the help everyone, this script does the job.

Posted

What can I say, I always go for the simple approach.  ;)

Nothing wrong with learning and trying some nifty RegEx if that's your thing though.  :D

We should probably devote a part of the forum to RegEx ... maybe I'd even start using it a lot more.  :P

P.S. Yes I know about the Wiki.  ;)  ;)

Make sure brain is in gear before opening mouth!
Remember, what is not said, can be just as important as what is said.

  Reveal hidden contents

I may have the Artistic Liesense ;) to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage)

userbar.png

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...