我正在尝试将一个正则表达式表达式放在一起,该表达式可以通过String格式选项使用重复模式。
String non_dot = "[^\\.]";
String dot = "\\.";
String sfp1 = "%1$s*?%2$s";
String sf = sfp1 + sfp1 + sfp1 + sfp1.substring(0,3) + "*";
System.out.println(sf);
String regex = String.format(sf, non_dot, dot);
System.out.println(regex);
打印sf
的输出如下:
%1$s*?%2$s%1$s*?%2$s%1$s*?%2$s%1$*
但是,当需要评估String.format(...)
时,为了导出regex
变量,我的代码用了:
Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = '1'
at java.util.Formatter.checkText(Formatter.java:2547)
at java.util.Formatter.parse(Formatter.java:2533)
at java.util.Formatter.format(Formatter.java:2469)
at java.util.Formatter.format(Formatter.java:2423)
at java.lang.String.format(String.java:2792)
at Solution.main(Solution.java:23)
我一直在使用这些资源。
据此,它应该可以工作!
有人可以发现我为什么收到此错误吗?
正如@JB Nizet的评论所述:您的子字符串结尾绑定是错误的,结果您的格式字符串中有%1$*
,这不是问题(在s
之后缺少$
)。