简体   繁体   中英

Need help in this Regular Expression

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM