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

Java:如何确定正则表达式模式匹配失败的原因?

夹谷承安
2023-03-14
问题内容

我正在使用正则表达式来匹配模式是否匹配,但是我也想知道它何时失败。

例如,假设我的模式为“ N {1,3} Y”。我将其与字符串“ NNNNY”匹配。我想知道它失败了,因为Ns太多了。或者,如果我将其与字符串“
XNNY”匹配,我想知道它失败,因为字符串中包含无效字符“ X”。

通过查看Java正则表达式包API(java.util.regex),似乎只有在匹配成功时Matcher类才能提供其他信息。

有没有办法解决这个问题?还是在这种情况下正则表达式甚至是一个选择?


问题答案:

我猜您应该使用解析器,而不是简单的正则表达式。

正则表达式可以很好地为字符串提供匹配,但在提供NON-matches方面却并非如此,更不用说解释为什么匹配失败了。



 类似资料:
  • 问题内容: 当字符串以数字开头时,我需要匹配,然后是一个点,然后是一个空格和1个或多个大写字符。匹配必须发生在字符串的开头。我有以下字符串。 我尝试过的正则表达式是: 它不匹配。一个有效的正则表达式将对这个问题有什么作用? 问题答案: (对不起,我先前的错误。大脑现在坚定地投入了。嗯,也许。) 这有效: 分解: =字符串开头 =一个或多个数字 (之所以转义,是因为它在字符串中,因此) =文字(或者

  • 问题内容: 我从以下格式的文件中获取输入: 现在,我想在我的Java代码中读取int1,int2,int3和int4。我该如何在Java中使用正则表达式匹配。谢谢。 问题答案: 为了避免空值:

  • 有没有一种方法可以在python中编写与以下格式的字符串匹配的正则表达式: 或 在这里,$=表示零或更多的空白可以存在 :来自字符串的固定子集的字符串['feat','fix','docs','断'] :最大长度为n的字符串 :最大长度为m的字符串 前缀应该始终是一个字符串,之后是一些最大q长度的字母数字字符 注意:我们不能省略像应该使用与下面示例中所示完全相同的格式: feat(feat new

  • 我在Java中使用模式和匹配器遇到了一个问题… 我试图用它从一个至少包含.sxxexx的字符串中提取两个数字。其中XX是我要提取的int。有没有regex/java专家想帮我?

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 这个正则表达式模式: 产生以下结果: 如何删除“ cID =“? 谢谢 问题答案: 您可以使用lookbehind(不在Javascript中): 或者,您可以使用分组并获取第一个分组: