Answered by:
/A/S/Z

Question
-
In my search, most of the responses around this expression were tailored around .... that is not the purpose of Regex..... However, lets ignore the standard programming 101 comments and ponder
/S+
/A/S+
both yield my desired behavior. any other than white space.
so things like
abc kllk match
and empty strings fail
and empty
However, when I did /A/S+/Z it no longer matches as I anticipate
What am I missing?
Wednesday, September 12, 2012 8:52 PM
Answers
-
Aside from having your slashes reversed, which I assume is a typo, if your desired behavior is to match "any" other than white space, your three regexes are quite different.
Given a string "abc kllk"
\S+ will produce two matches: "abc" and "kllk"
\A\S+ will only match "abc"
\A\S+\Z will not match anything.Consider that \A and \Z determine where the match starts.
Here is a hint: \S+\Z will match only kllk
Ron
- Proposed as answer by Mike FengModerator Thursday, September 13, 2012 10:00 AM
- Marked as answer by Tyboriel Thursday, September 13, 2012 2:06 PM
Thursday, September 13, 2012 12:36 AM
All replies
-
Of course /S is meaningless. I think you meant \S which mean 'Anything other than White space.
Also, \A is meaningless, I think you mean \A which means 'Beginning of string'.
Wednesday, September 12, 2012 9:22 PM -
John
true... i apologize for the syntax error, but the intention i think was clear.
- Edited by Tyboriel Wednesday, September 12, 2012 9:25 PM
Wednesday, September 12, 2012 9:23 PM -
Aside from having your slashes reversed, which I assume is a typo, if your desired behavior is to match "any" other than white space, your three regexes are quite different.
Given a string "abc kllk"
\S+ will produce two matches: "abc" and "kllk"
\A\S+ will only match "abc"
\A\S+\Z will not match anything.Consider that \A and \Z determine where the match starts.
Here is a hint: \S+\Z will match only kllk
Ron
- Proposed as answer by Mike FengModerator Thursday, September 13, 2012 10:00 AM
- Marked as answer by Tyboriel Thursday, September 13, 2012 2:06 PM
Thursday, September 13, 2012 12:36 AM -
Ron
I will accept your answer, as I did not fully define describe problem
I do not have control over the insertion of \A and \Z, as that is done by something else.
I can say that I have something that does solve my full problem.
\A(\S|\S(\S|\s)*\S)\Z
This yields the desired result that i was searching for.
Thursday, September 13, 2012 2:06 PM -
I'm glad you found something that works for you. Of course, by not defining your problem, it is difficult to obtain an appropriate answer :-)
Your regex, in fact, does match the white space between abc and klik.
It captures, into capturing group 1 "abc kllk"; and into capturing group 2: "l" (the second "l").
Ron
Thursday, September 13, 2012 3:13 PM -
By the way, to elaborate a bit further on your regex, it will capture everything in the string, so long as the string does not start or end with a whitespace character. So an equivalent expression should be:
\A\S.*\S\Z
Ron
Thursday, September 13, 2012 3:30 PM -
Back to the full problem, I needed to account for the start and the end spaces. The root cause of my lack of understanding was, I did not realize that the \A and \Z was basically like two pointers that said it needs to start here and end there or the answer is false. I thinking of it as two separate operations. Start from the beginning, and than start from the end. Thank you for you patients and help. I am sure this get easier with practice like most things.
Thursday, September 13, 2012 7:31 PM