We help IT Professionals succeed at work.

Can someone help me with a file search filter Using Regex in C# Windows Form Application

161 Views
Last Modified: 2018-10-03
I'm trying to get the op numbers from the following filename strings using RexEx which the pattern will be used in VS2017 using the C# language for developing a Windows Form Application. In this application, we are filtering filenames in a datagridview by Op number when searching through a folder directory and all its subdirectories. I'm having an issue trying to get the regex to work on the tester websites I have tried. These are regxr.com and regexstorm.net/tester

Filename1: C-2590-3 REV-B OP#50.pcl
Filename 2: C-2590-3 REV-B OP#50-59.pcl
Filename 3: C-2590-3 REV-B OP#50-59-90.pcl
Filename 4: C-2590-3 REV-B OP#50-59-90-70(Flip).pcl
Filename 5: C-2590-3 REV-B OP#50-59-90 (Flip)60-90.pcl

The text I need to capture is :

Filename 1 Results: 50
Filename 2 Results: 50-59
Filename 3 Results: 50-59-90
Filename 4 Results: 50-59-90-70
Filename 5 Results: 50-59-90 60-90

This is what I have tried on the regexr.com tester:

(?<=\043)\d{2}|(?<=\043)\d{2}.\d{2}|(?<=\043)\d{2}.\d{2}.\d{2}

(?<=#)\d{2,}|(?<=#)\d{2,}.\d{2,}|(?<=#)\d{2,}.\d{2,}.\d{2,}

and I keep getting stuck because it will only show me the 1st two digits "50"

I'm not real familiar with Regex and I thought I should get some help because I'm missing something And don't know what that might be.

Can anyone help with this? Here is a screenshot of the form application running.

Tesa File Search - Screenshot1
Comment
Watch Question

CERTIFIED EXPERT
Most Valuable Expert 2011
Top Expert 2015

Commented:
You don't really need the lookbehinds--simple capture groups should suffice.

(Filename)\s*(\d+).*OP#(\d+(?:-\d+)*)(?:\s*\(Flip\)(\d+(?:-\d+)*))?.*

Open in new window


The pattern explanation is broken down here on the "Explain" tab:  https://regexr.com/40ita

You can also look at the "Replace" tab to see the results as you have listed.
Steve WilliamsProduct Design Engineer

Author

Commented:
@käµfm³d
I may have not explained this correctly. I need only the following returned so I can populate the datatable row, each line below is a different row in the datatable:

50
50-59
50-59-90
50-59-90-70
50-59-90 60-90
CERTIFIED EXPERT
Most Valuable Expert 2011
Top Expert 2015
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION
Steve WilliamsProduct Design Engineer

Author

Commented:
Thanks for your help! But this did not work out how I planned but after playing with your regex solution I realized that the different variations of file name structures could not be done with regex. The end users try to follow a format but rarely do. I do know that they always use the OP# in the string and the file name ends with .pcl or .sch so this is my final expression.

#(.*?)\.

It finds everything between the "#" sign and the "."

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions