在 Java/Android 中,您可以使用格式字符串来指定某些 outlook 的预期外观。例如,这些格式字符串可以传递给 String.format()
或 Formatter()
。
简单的例子是 %s
或 %1$d
。
现在我想编写一个在 JavaScript 中运行的正则表达式,并允许您从给定的文本中提取 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-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
通过。
关于java - 用于在 JavaScript 中查找 Java 格式字符串的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304896/