FINDSTR \s regexp meaning

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
findstr
Posts: 7
Joined: 09 Jun 2021 12:36

FINDSTR \s regexp meaning

#1 Post by findstr » 09 Jun 2021 12:48

Hello!

Code: Select all

C:\>ECHO /? | FINDSTR /R "\s"
 ECHO [message]
How does FINDSTR interpret \s regexp?
It produces some strange results, try:
FOR /? | FINDSTR /R "\s"
DIR /? | FINDSTR /R "\s"
netstat -a | FINDSTR /R "\s"

DIR /? | FINDSTR /R "\t"
Produces weird output.
ECHO /? | FINDSTR /R "\t"
Produces no output.

How does it work?

aGerman
Expert
Posts: 4140
Joined: 22 Jan 2010 18:01
Location: Germany

Re: FINDSTR \s regexp meaning

#2 Post by aGerman » 10 Jun 2021 03:11

Well, you provided some commands. But you didn't tell what output you get, and what output you expected to get. I mean, the findstr command on Windows is probably the tool with the worst regex support out of all regex tools that I know. So, in case you expect that \s will match a whitespace and \t will match a tab, then no, findstr does only support meta characters which are listed in the help message (findstr /?). And half of them are not even "standard regex".

You may want to have a look at JREPL viewtopic.php?f=3&t=6044

Steffen

findstr
Posts: 7
Joined: 09 Jun 2021 12:36

Re: FINDSTR \s regexp meaning

#3 Post by findstr » 10 Jun 2021 11:15

Well, due to localization, the results won't be of any particular use here.
ECHO /? | FINDSTR /R "\s"
returns a single string: ECHO [message]
What results do you get if you run ECHO /? | FINDSTR /R "\s"?

FOR /? | FINDSTR /R "\s"
returns some random strings from FOR's help.
DIR /? | FINDSTR /R "\s"
returns first 2 strings of documentation and 1 string from the middle: " sortorder N..."

What I'm trying to figure out is how exactly findstr interprets \s and is there any good use for \s.

Thanks for JREPL, I'll give it a try!

T3RRY
Posts: 158
Joined: 06 May 2020 10:14

Re: FINDSTR \s regexp meaning

#4 Post by T3RRY » 10 Jun 2021 11:49

findstr wrote:
10 Jun 2021 11:15
Well, due to localization, the results won't be of any particular use here.
ECHO /? | FINDSTR /R "\s"
returns a single string: ECHO [message]
What results do you get if you run ECHO /? | FINDSTR /R "\s"?

FOR /? | FINDSTR /R "\s"
returns some random strings from FOR's help.
DIR /? | FINDSTR /R "\s"
returns first 2 strings of documentation and 1 string from the middle: " sortorder N..."

What I'm trying to figure out is how exactly findstr interprets \s and is there any good use for \s.

Thanks for JREPL, I'll give it a try!
Had you taken the time to read the documentation of findstr, you would be aware using "\s" with the /R switch is equivalent to just using "s", given the backwards slash is the escape character for findstr meta characters. Given the "s" is just a regular character, the backslash is disregarded.

aGerman
Expert
Posts: 4140
Joined: 22 Jan 2010 18:01
Location: Germany

Re: FINDSTR \s regexp meaning

#5 Post by aGerman » 10 Jun 2021 11:57

Yeah, also my expectation is that the backslash is simply ignored and findstr tries to match the s in each line.
Tested in a cmd window:

Code: Select all

D:\test>(echo qwe&echo asd&echo yxc)|findstr /r "\s"
asd

D:\test>
Certainly this thread on SO is more enlightening as to further behavior of findstr: https://stackoverflow.com/questions/884 ... str-comman

Steffen

Post Reply