正则表达式模式匹配

时间:2012-11-13 07:41:39

标签: java regex string

我正在使用java正则表达式库来查找模式" String_OneOrMoreDigits"。例如," linenumber_1"或" linenumber_31"或" linenumber_456"。我正在尝试以下模式,假设我将获得类型的字符串" linenumber_2"或" linenumber_44"。但是,我只是得到" linenumber_2"类型的字符串,最后它不匹配多个数字。如何匹配这些字符串?

Pattern pattern = Pattern.compile("(linenumber_[0-9])|(linenumber_[0-9][0-9])");

3 个答案:

答案 0 :(得分:6)

无需替换,只需在[0-9]上使用“一个或多个”限定符:

Pattern pattern = Pattern.compile("linenumber_[0-9]+");

这将匹配“linenumber_1”和“linenumber_44”和“linenumber_12345984”。如果您想要匹配一个或两个数字,您可以通过更明确地允许的位数来做到这一点:

Pattern pattern = Pattern.compile("linenumber_[0-9]{1,2}");

答案 1 :(得分:2)

如果您想要特定数量的数字而不是

,请添加
Pattern pattern = Pattern.compile("linenumber_[0-9]{1,2}");

您也可以使用

Pattern pattern = Pattern.compile("linenumber_[0-9]{1|4|8}");

指定您需要1位,4位或8位数字。 和克劳德说,

Pattern pattern = Pattern.compile("linenumber_[0-9]+");

将匹配任意数量的数字。

答案 2 :(得分:1)

你也可以使用:

Pattern pattern = Pattern.compile("linenumber_\d+");

如果您需要不区分大小写的匹配项,请在开头添加(?i),如下所示:

Pattern pattern = Pattern.compile("(?i)linenumber_\d+");

(?i)允许正则表达式引擎执行不区分大小写的匹配。 \d会匹配0 to 9

中的任何数字