2015-10-19 102 views
-2

我必须检查字符串,以便字符串可以包含字母数字字符和/或下划线(_)。我在下面的Java中编写了模式表达式。但它似乎并不奏效。正则表达式错误在哪里?

String pattern = "(\\w*)(_*)(\\d*)"; 

匹配串的实施例是hello123_,hi_12hello,bhushu,12_,23等 推荐上的图案表达的变化。

+0

“请求我们推荐或查找图书,工具,软件库,教程或其他场外资源的问题与Stack Overflow无关” –

+0

请给出一些您想要匹配的字符串示例,以及你不想匹配的字符串。 –

+0

只需测试'\\ w',它包含'\\ d'和'_'。 –

回答

5

您当前的模式相匹配,从[A-Za-z0-9_]

    • 零个或多个字符,随后是零个或多个下划线
    • 零个或多个数字

    所以它适用于任何的随后你给的例子,因为这里的第一点匹配它们,其他的可以是空的。从当前的表达

    String pattern = "[A-Za-z0-9_]*"; 
    

    String pattern = "\\w*"; 
    

    即仅仅是第一组:

    但是,您可以更简单地作为表达模式。

    查看Javadoc的Pattern

  • +0

    @RealSkeptic done –

    +0

    这两个正则表达式都匹配空字符串,这也可能导致意外的结果。也许'\\ w +“'会更有意义,取决于OP实际上想做什么...... –

    +1

    @TimPietzcker同意了,但是由于OP没有满足他的确切要求...... –