我正在使用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])");
答案 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