测试Java正则表达式appendReplacement()

时间:2010-09-20 09:35:57

标签: java regex validation

我开发了一个UI,允许用户定义正则表达式模式,然后是appendReplacement()使用的替换字符串。

e.g。

  • 模式 - 7(。*)
  • 替换模式 - $ 1

所以71234会产生1234。

无论如何,我可以验证输入模式和替换模式是否兼容,而无需用户输入匹配的字符串?例如,如果替换模式是$1$2,那么这将在运行时抛出异常。我可以提前检查吗?

编辑:

最终解决方案是按照aioobe的建议进行,并通过创建一个虚拟匹配器来获取组计数(不确定为什么这个方法不在Pattern TBH上),然后手动手动解析替换字符串以查找哪些$ group引用存在。有点繁琐但有效。

1 个答案:

答案 0 :(得分:2)

嗯,你可以这样做:

yourPattern.matcher("").groupCount();

groupCount()将返回捕获组的数量(至少可以将其视为用户可能引用的上限)。