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
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 digits The above regex will fail the match in all cases when %s
is followed with [
, eg in %s[text
. If you only want to fail the match when %s
is followed with [
+number+ ]
, use %s(?!\\[\\d+\\])(?::\\d+)?
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.