Reputation: 353
Hi I'm nearly new with this of Regex... so, maybe my problem it's easy but I can't find a solution!
I'm writing a regex pattern that looks into the user's writing and paint with another color the matches that is founded. I want for example to paint with another color, if the user write something like this:
foo()
the thing is that I DON'T want to paint that if the user writes something else after that, I mean if the user write only
"foo()" (or "foo() ")
then it's fine, I want to paint it, but if the user write
"foo()d"
I don't want to paint that because is now well written for me.
I already wrote the regex pattern that match the "foo()" (or also with a dot in the middle, like "foo.foo()"), but I´m facing with that problem. I need to add something to my pattern that allow only a space, or nothing (if the user write something else after the ")" I don't want to match it.) This is my pattern:
[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)
Thank you very much!
Upvotes: 24
Views: 44733
Reputation: 1720
[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)[ ]?
Adding a [ ]?
should do it. ?
is used for 1
or 0
, [ ]
will only match space.
Also, [\s]?
would work for all types of whitespace (tabs included).
Upvotes: 1
Reputation: 46067
This seems to do what you're looking for according to my regex tester:
[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)([ ]?)(?!.)
If you want to allow for more than one space, use this:
[a-z]*\.?[a-z]*\(("[^"\r\n]*"|[-]?\b\d+[\.]?\d*\b)?\)([ ]*)(?!.)
Upvotes: 0
Reputation: 2681
David Brabant is close, but I think you actually want to try ending your regular expression with (?!\S)
- this will mean you'll match anything not followed by a non-whitespace character. If you just want to match on spaces rather than whitespace, use (?![^ ])
.
Upvotes: 22
Reputation: 4244
could you try to add:
\s*% ?
\s* : zero or more spaces
% means: end of string
Upvotes: 1
Reputation: 43589
Use negative look ahead:
(\w+)(\.*)(\(\))+(\s)*(?!.)
The important part for you in the regex above is: (\s)*(?!.)
(\s)* : followed by 0 or more white spaces (?!.) : and no other character
Upvotes: 6