Avatar of Steve Williams
Steve Williams
Flag for United States of America asked on

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

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
Regular ExpressionsC#* VS2017Windows OSMicrosoft Visual Studio

Avatar of undefined
Last Comment
Steve Williams

8/22/2022 - Mon
kaufmed

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 Williams

ASKER
@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
ASKER CERTIFIED SOLUTION
kaufmed

THIS SOLUTION ONLY AVAILABLE TO MEMBERS.
View this solution by signing up for a free trial.
Members can start a 7-Day free trial and enjoy unlimited access to the platform.
See Pricing Options
Start Free Trial
GET A PERSONALIZED SOLUTION
Ask your own question & get feedback from real experts
Find out why thousands trust the EE community with their toughest problems.
Steve Williams

ASKER
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 "."
I started with Experts Exchange in 2004 and it's been a mainstay of my professional computing life since. It helped me launch a career as a programmer / Oracle data analyst
William Peck