Reputation: 82
The regular expression I am using:
%s??[a-z](:\d+|)(^\[)?
The string is:
"%sprix is the %s[4] online %s[3]:6 pshopping %s:9 in %s"
I am trying to find all %s
from string except %s[4]
and %s[3]
.
My output using the above regular expression is not giving expected results.
Expected Output is:
%s, %s:9, %s
My Output is:
%s, %s[ , %s[, %s:9, %s
Upvotes: 1
Views: 59
Reputation: 627609
You may use
%s(?!\[)(?::\d+)?
See the regex demo.
Details:
%s
- a percentage sign and s
(?!\[)
- that is not followed with [
(?::\d+)?
- an optional sequence of a :
and one or more digitsThe above regex will fail the match in all cases when %s
is followed with [
, e.g. in %s[text
. If you only want to fail the match when %s
is followed with [
+number+]
, use %s(?!\[\d+\])(?::\d+)?
.
Upvotes: 2