Link to home
Start Free TrialLog in
Avatar of Souladin
Souladin

asked on

Getting multiple matches from a string with PowerShell

I have a bunch of log files that I'd like to parse through and pull string data out of, but the RegEx on this one is getting a little outside of my level of expertise.  I'm basically going to use code similar to that found here :
$input_path = 'c:\test\file.txt'
$regex = '' #Need help with this part
select-string -Path $input_path -Pattern $regex -AllMatches | % { $_.Matches } | % { $_.Value }

Open in new window


What I really need help with is figuring out the RegEx for these log files.  Here is an example of what they look like:

<option value="954393">LASTNAME1, FIRSTNAME1 - &#x5b;lfirstname1&#x40;domain.com&#x5d;</option>

<option value="819613">LASTNAME2, FIRSTNAME2 - &#x5b;firstname2.lastname2&#x40;domain.com&#x5d;</option>

<option value="1151900">LASTNAME3, FIRSTNAME3 - &#x5b;firstname3.lastname3&#x40;domain.com&#x5d;</option>

Open in new window


What I'm trying to match and pull out is the number inside the value="", the LASTNAME, FIRSTNAME and then I want the string between &#x5b; and &#x40; (which may or may not contain a single period in it).

Are there any RegEx experts out there that can assist?
Avatar of Dan Craciun
Dan Craciun
Flag of Romania image

Try this:
$regex = "<option value=""(\d*)"">([\w ]*), ([\w ]*)- &#x5b;(.*)&#x40;"

Open in new window

You'll find the number in $1, the lastname in $2, the firstname in $3 and the last string in $4.

HTH,
Dan
ASKER CERTIFIED SOLUTION
Avatar of Dan Craciun
Dan Craciun
Flag of Romania image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Souladin
Souladin

ASKER

That was way less complicated than I thought it would be.  Looks like I need to take that regex refresher class again.  Thanks!
Glad I could help!

You could read some answers and then answer a few questions here. Bet it would trump that introductory course :)