?
Solved

Getting multiple matches from a string with PowerShell

Posted on 2014-04-03
4
Medium Priority
?
2,447 Views
Last Modified: 2014-04-03
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?
0
Comment
Question by:Souladin
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
4 Comments
 
LVL 35

Expert Comment

by:Dan Craciun
ID: 39976136
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
0
 
LVL 35

Accepted Solution

by:
Dan Craciun earned 2000 total points
ID: 39976178
BTW, if you want to see the values, you need to do it like this:
select-string -Path $input_path -Pattern $regex -AllMatches | % { $_.Matches.Groups } | % { $_.Value }

Open in new window

It will output something like this:
<option value="954393">LASTNAME1, FIRSTNAME1 - &#x5b;lfirstname1&#x40;
954393
LASTNAME1
FIRSTNAME1 
lfirstname1
<option value="819613">LASTNAME2, FIRSTNAME2 - &#x5b;firstname2.lastname2&#x40;
819613
LASTNAME2
FIRSTNAME2 
firstname2.lastname2
<option value="1151900">LASTNAME3, FIRSTNAME3 - &#x5b;firstname3.lastname3&#x40;
1151900
LASTNAME3
FIRSTNAME3 
firstname3.lastname3

Open in new window

Without groups you would only see the original strings.
0
 

Author Closing Comment

by:Souladin
ID: 39976302
That was way less complicated than I thought it would be.  Looks like I need to take that regex refresher class again.  Thanks!
0
 
LVL 35

Expert Comment

by:Dan Craciun
ID: 39976311
Glad I could help!

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

Featured Post

Prepare for your VMware VCP6-DCV exam.

Josh Coen and Jason Langer have prepared the latest edition of VCP study guide. Both authors have been working in the IT field for more than a decade, and both hold VMware certifications. This 163-page guide covers all 10 of the exam blueprint sections.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Windows 10 came with  a lot of built in applications, Some organisations leave them there, some will control them using GPO's. This Article is useful for those who do not want to have any applications in their image (example:me).
There are times when we need to generate a report on the inbox rules, where users have set up forwarding externally in their mailbox. In this article, I will be sharing a script I wrote to generate the report in CSV format.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
Suggested Courses

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question