在Java / Android中,您可以使用Format字符串来指定某些outlook的外观。例如,这些格式字符串可以传递给String.format()
或Formatter()
。
简单示例包括%s
或%1$d
。
现在我想编写一个在JavaScript中工作的RegEx,并允许您从给定文本中提取Java的格式字符串。
我的解决方案将是以下RegEx:
%(([0-9]+\$)?)([,+ (\-#0]*)([0-9]*)(.[0-9]*)((hh|h|l|ll|L|z|j|t)*)(d|i|u|f|F|e|E|g|G|x|X|o|s|S|c|C|a|A|b|B|h|H|p|n|%)
然而,这甚至不适用于最简单的情况(%s
)。但似乎适用于所有其他(更复杂)的案例。
我在这里问的是:你会说这是一个好的(正确的)RegEx还是什么都没有?
答案 0 :(得分:4)
问题在于这个群体:(.[0-9]*)
您希望首先%
,然后上述群组中的.
期待其中一个(不是可选的)。然后(d|i|u|f|F|e|E|g|G|x|X|o|s|S|c|C|a|A|b|B|h|H|p|n|%)
也期待着什么。
所以基本上你的正则表达式中唯一必需的项是:
1. %
2. .
中的(.[0-9]*)
3. (d|i|u|f|F|e|E|g|G|x|X|o|s|S|c|C|a|A|b|B|h|H|p|n|%)
%s
中没有空间容纳%
以及.
和想要提取s
的块。
我不确定你想要(.[0-9]*)
到底是什么,但是像(.[0-9]*)?
那样选择它是至少允许%s
通过。