Question

I was wondering if it's possible to use findstr to search through a CSV for anything matching this regular expression

^([BPXT][0-9]{6})|([a-zA-Z][a-zA-z][0-9][0-9](adm)?)$
Was it helpful?

Solution

I don't know which language you're talking about, but there is one obvious problem with your regex: The ^ and $ anchors require that it matches the entire string, and you seem to be planning on matching individual entries in your CSV file.

Therefore, you should use word boundary anchors instead if your regex engine supports them:

\b(?:([BPXT][0-9]{6})|([a-zA-Z]{2}[0-9]{2}(adm)?))\b

I've also added another non-capturing group around the alternation. In your regex the anchors at the start and end of the string would have been part of the alternation, which is probably not intended. Whether you really need all the other parentheses depends on what you're going to do with the match.

OTHER TIPS

No, it is not possible to use findstr to search for matching substrings, especially those matching the complex expression you've provided.

findstr is a Windows built-in.

findstr /? shows the subset of regex that it can use:

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurrences of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

This means that most of your expression is out the window.

Also, findstr can't limit its output to just the matched expression; it only identifies lines containing matches.

It is entirely unsuitable for the task described.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top