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

正则表达式无法使用带星号的matchs()模式

杜元明
2023-03-14
问题内容

示例代码:

    String test = "Z";
    Pattern pt = Pattern.compile("[0-9]*");
    Matcher mc = pt.matcher(test);
    System.out.println(mc.find());
    System.out.println(mc.matches());

据我所知,它应该打印两个真实的。但是,matches()打印错误。星号表示零次或多次,为什么matches()产生假?

matches() 尝试匹配整个字符串,对我来说还可以,因为星号给我零时间。

那为什么比赛失败呢?


问题答案:

模式显示为[0-9]*“匹配0或0到0多次”。 如果看到数字,它将添加到匹配项中。
如果没有看到数字,它仍将0长度的字符串添加到匹配项中。
这并不意味着匹配任何具有0个或多个数字的字符串(因为每个字符串具有0个或多个数字,这使这一点毫无意义),因此在您的字符串中Z,有两个零长度的匹配项:一个在字符串的开头,一个在字符串的结尾,两者都有0位数字。

这意味着find它将返回两次true,并且matches返回false,因为整个字符串都不匹配(请记住有wo匹配!)。



 类似资料:
  • 我有一个非常好的正则表达式,它从文本中选择引用: 但是我需要一个正则表达式,它从没有引号的文本中选择引号。 例如,我有: 鲸鱼包括八个现存的家族:“鲸豚科”(白鲸),“鲸豚科”(露脊鲸),“鲸豚科”(侏儒露脊鲸),“白鲸科”(灰鲸),“独角鲸科”(白鲸和独角鲸),“抹香鲸科”(抹香鲸)。。。 我需要在引号之间提取文本: 龟甲翅目,龟甲翅目,龟甲翅目,... 要提取括号之间的文本,我使用正则表达式:

  • 问题内容: 我需要一个正则表达式 那么任何数字。并再次编号和。 所以这是有效的 但 无效 我尝试了以下模式: 但这些都不满足我的要求。请帮忙? 我现有的代码是 问题答案: 这样的事情应该起作用: 编辑 是的,不从该描述,如果最终清除被允许(假定一个初始是 不 )。 如果不: 或者 (如果看起来更合乎逻辑) 测试 产生:

  • 问题内容: 我正在使用Django的URLconf,我将收到的URL是 我想使用来匹配该URL ,但它不起作用。 然后我发现这是“?”的问题。 因为我尝试使用even 进行匹配,但都失败了,但是当它是“ +”或任何其他字符时,它可以工作。 如何匹配“?”,有什么特别之处吗? 问题答案: 你的网址内部不匹配的原因是因为?开始新的GET查询。 因此,URL的可匹配部分只能达到第一个“ aaa”。其余的

  • 我需要编写一个具有以下规则的正则表达式: null null 这些示例无效: > 12--11(因为它包含两个连字符) 1-2345(因为它包含5号) <>是字符出现在最后一个位置,那么在字符之前必须有一个数字not hypen。 即11-A(必须不及格)11-1A(必须及格)

  • 我是正则表达式的初学者,并尝试搜索特定的数字模式。以下数据以 XML 格式嵌入。 要求是提取数据(最里面的列表)。在这个例子中,数据从24779开始到24760。注意:每次数据可能不是从“24”开始。因此,我计划通过以下逻辑提取:如果标签名(在本例中:DUT_1_PC)具有非零的有效数据,并且有效数据的计数大于100,用逗号分隔,则提取该列表及其标签名(DUT_1_PC)。 我无法提取所需的数据。

  • 下面是我正在使用的正则表达式的最新版本,它抛出了错误“Invalid regular expression” XSD:正则表达式在位置4验证失败:当前选项设置不支持此表达式。 我在xsd文件中得到了这个异常,我正在message broker(IIB)中开发这个xsd。有谁能帮我解决这个问题吗?