我正在使用的正则表达式:
%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
答案 0 :(得分:2)
您可以使用
%s(?!\[)(?::\d+)?
请参阅regex demo。
<强>详情:
%s
- 百分号和s
(?!\[)
- [
(?::\d+)?
- :
和一个或多个数字的可选序列当%s
跟随[
时,上述正则表达式在所有情况下都会失败。在%s[text
。如果您只想在%s
后跟[
+号码+ ]
后失败,请使用%s(?!\[\d+\])(?::\d+)?
。