Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式模式匹配_Java_Regex_String - Fatal编程技术网

Java 正则表达式模式匹配

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

我正在使用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("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之间的任何数字