Java 正则表达式模式匹配
我正在使用java正则表达式库查找一个模式“String\u one或moredigits”。例如,“行号_1”或“行号_31”或“行号_456”。我正在尝试以下模式,假设我将获得类型为“linenumber_2”或“linenumber_44”的字符串。但是,我只得到类型为“linenumber_2”的字符串,它在末尾不匹配多个数字。如何匹配这样的字符串Java 正则表达式模式匹配,java,regex,string,Java,Regex,String,我正在使用java正则表达式库查找一个模式“String\u one或moredigits”。例如,“行号_1”或“行号_31”或“行号_456”。我正在尝试以下模式,假设我将获得类型为“linenumber_2”或“linenumber_44”的字符串。但是,我只得到类型为“linenumber_2”的字符串,它在末尾不匹配多个数字。如何匹配这样的字符串 Pattern-Pattern=Pattern.compile(((行号[0-9]))|(行号[0-9][0-9])无需更改,只需在[0-9
Pattern-Pattern=Pattern.compile(((行号[0-9]))|(行号[0-9][0-9])代码>无需更改,只需在[0-9]
上使用“一个或多个”限定符即可:
Pattern pattern = Pattern.compile("linenumber_[0-9]+");
这将匹配“线号_1”、“线号_44”和“线号_12345984”。如果您只想匹配一个或两个数字,可以更明确地说明允许的位数:
Pattern pattern = Pattern.compile("linenumber_[0-9]{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]+");
将与任意数字匹配。您也可以使用:
Pattern pattern = Pattern.compile("linenumber_\d+");
如果需要不区分大小写的匹配,请在开头添加(?i)
,如下所示:
Pattern pattern = Pattern.compile("(?i)linenumber_\d+");
(?i)
允许正则表达式引擎执行不区分大小写的匹配。
\d
将匹配0到9之间的任何数字