需要有关此正则表达式的帮助

时间:2016-11-05 21:23:57

标签: python regex regex-negation

我正在使用的正则表达式:

%s??[a-z](:\d+|)(^\[)? 

字符串是:

"%sprix is the %s[4] online %s[3]:6 pshopping %s:9 in %s" 

我正在尝试从%s%s[4]以外的字符串中找到所有%s[3]

使用上述正则表达式的输出未给出预期结果。

预期输出为:

%s, %s:9, %s

我的输出是:

%s, %s[ , %s[, %s:9, %s

1 个答案:

答案 0 :(得分:2)

您可以使用

%s(?!\[)(?::\d+)?

请参阅regex demo

<强>详情:

  • %s - 百分号和s
  • (?!\[) - [
  • 后面没有
  • (?::\d+)? - :和一个或多个数字的可选序列

%s跟随[时,上述正则表达式在所有情况下都会失败。在%s[text。如果您只想在%s后跟[ +号码+ ]后失败,请使用%s(?!\[\d+\])(?::\d+)?