【发布时间】:2010-12-21 07:19:51
【问题描述】:
假设我有一个像这样的正则表达式:
"The quick (red|brown|blue|yellow) fox (jumps|leaps) over the lazy (dog|cat)."
这个正则表达式有 3 个分组的组件 - 如果它与给定的字符串匹配,正则表达式 api 将允许您轻松提取每个组内的值。
现在假设我有 3 个字符串:
["red", "leaps","cat"]
如果我们假设正则表达式中不在组内的所有字符都只是文字文本字符 - 有没有办法将这 3 个字符串中的每一个插入原始正则表达式中的相应组,从而产生一个组合正则表达式的非分组部分的输出字符串?在这种情况下,导致“快速的红狐狸跳过懒惰的猫”。 最好不要有一个已经匹配正则表达式的字符串。
我希望在 Java 中执行此操作 - 我很确定 java.util.regex 不支持此操作,但我认为可能会有一个 3rd 方库可以允许执行此操作。谁能指点一下?
【问题讨论】:
-
为什么不使用模板库?你有什么目的?
-
正则表达式字符串是否一致?或者是否允许使用
"The quick %s fox %s over the lazy %s."之类的东西? -
我希望为 url 映射做一些类似于 django 的 reverse() 的事情。 Django 允许您将正则表达式映射到可调用对象,并且当您使用 reverse() 时,这些组将成为可调用对象的参数。示例:/user/(\d+)/ 映射到 home(user_id),因此 reverse(home, 12) 返回“/user/12/”(基本上,返回将映射到它的 URL)。现在我已经将代码挖掘到 django,看起来他们正在使用一段相当复杂(而且很有趣!)的代码,它手动解析正则表达式以生成一个对象,该对象可以从 arg 列表生成反向 URL 映射。我可能只是用 java 重新实现。
标签: java regex regex-group