当前位置: 首页 > 面试题库 >

正则表达式重用一种模式来捕获多个组?

班安平
2023-03-14
问题内容

我想多次匹配某些模式,就像这里描述的一样。

^(somelongpattern[0-9])([,; ]+(?1))*$

例如,这将匹配:

somelongpattern0
somelongpattern9 ,; somelongpattern2

但是,以上代码在pcre中有效,在java中不起作用。它在(?1)上给我一个错误“未封闭的期权组”

有什么办法吗?我有一个很长的正则表达式模式,如果可能的话,我不想重复2次。


问题答案:

在查阅Java文档时,他们仍然不遵循PCRE子例程准则。Java Regex基本上不支持子例程。

另请参见JavaRegex手册



 类似资料:
  • 假设我有这个虚拟URL,我需要提取植物及其颜色作为 下面的I have正在按预期捕获我需要的元素,但是当我的URL中的植物少于4株时,它无法捕获任何东西。底部有一个指向regex测试员的链接,其中有示例代码和URL,您可以使用。 如何修改这个正则表达式,使其动态工作,从而在不需要静态URL结构的情况下捕获可用内容。现在,假设我最多只能捕获4株植物(8组) https://regex101.com/

  • 我有一个工作正则表达式来提取一些信息。php代码如下所示: https://ideone.com/UdIaA7 与str:https://regex101.com/r/rF0uP7/5 带有str2的正则表达式:https://regex101.com/r/cV6iF9/1 然而,它在str上工作得很好,但在str2上却不匹配,我找不到原因

  • 问题内容: 我正在尝试使用Java expr在:之后捕获正确的部分,但是在以下代码中,打印的捕获组是整个字符串,怎么了? 问题答案: 子组的编号从1开始,全文为0。只需循环执行count + 1。

  • 问题内容: 我正在使用Java的正则表达式库。我想针对以下格式验证字符串: 数字的数量未知。我想确保该字符串中至少有一个数字,并且每两个数字之间用逗号分隔。我也想从字符串中获取数字。 ( 注意: 这只是一个简化的示例,string.split无法解决我的实际问题) 我写了以下正则表达式: 验证部分起作用。但是,当我尝试提取数字时,我得到了2组: regex101版本:https://regex10

  • 问题内容: 我有一个Python正则表达式,其中包含一个可以出现零次或多次的组-但是当我之后检索组列表时,仅出现最后一个。例: () 这将返回列表(“ g”,) 我需要它返回(’a’,’b’,’c’,’d’,’e’,’f’,’g’,) 那可能吗?我该怎么做? 问题答案: 除了道格拉斯·里德(Douglas Leeder)的解决方案之外 ,以下是解释: 在正则表达式中,组数是固定的。在组后面放置一个

  • 我想用正则表达式解析一个字符串,字符串的例子是 罗得:他说:你不能通过 我想将作为一个组捕获,并且。然而,当我使用我的模式时,它返回 和 他说:你不应该使用正则表达式传递吗?