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 - Fatal编程技术网

Java正则表达式字母表后跟数字

Java正则表达式字母表后跟数字,java,regex,Java,Regex,我得到的文件名为字符串,如下所示: file_g001 file_g222 g_file_z999 我想返回包含“g_x”的文件,其中x是任意数字(作为字符串)。请注意,最后一个文件不应出现,因为g_后面跟一个字母表,而不是像前2个那样的数字 我尝试了:file.contains(“\g[0-9]*$”),但没有成功 预期成果: file_g001 file_g222 您是否使用字符串的方法contains? 如果是这样,则它不适用于正则表达式 当且仅当此字符串包含指定的字符值

我得到的文件名为字符串,如下所示:

file_g001  
file_g222  
g_file_z999
我想返回包含“g_x”的文件,其中x是任意数字(作为字符串)。请注意,最后一个文件不应出现,因为g_后面跟一个字母表,而不是像前2个那样的数字

我尝试了:
file.contains(“\g[0-9]*$”)
,但没有成功

预期成果:

file_g001  
file_g222

您是否使用字符串的方法
contains
? 如果是这样,则它不适用于正则表达式

当且仅当此字符串包含指定的字符值序列时,返回true

考虑使用方法
匹配


您的正则表达式也很好,我们只是稍微改进一下:

^.*_g[0-9]+$

这可能会奏效


如果要探索/简化/修改该表达式,请在的右上面板中进行说明


试验
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
最后一个字符串regex=“^.*_g[0-9]+$”;
final String=“文件\u g001\n”
+“文件\u g222\n”
+“文件\u一些\u其他\u单词\u g222\n”
+“文件\u g\n”
+“g_文件_z999”;
最终模式=Pattern.compile(regex,Pattern.MULTILINE);
final Matcher Matcher=pattern.Matcher(字符串);
while(matcher.find()){
System.out.println(“完全匹配:+matcher.group(0));

对于(int i=1;i)有一个.png扩展名,似乎您不是在寻找g_x,而是在寻找_gx,这意味着第三个文件不会被返回anyway@TwoStarII使用
file.matches(“.*\\.png$”
file.matches(.*\\.png$”)
…太棒了-很有效!@brso05将其作为答案发布,我将accept@TwoStarII继续接受阿诺·克劳德尔的回答,它本质上是在说同样的话。。。
^.*_g[0-9]+$
^.*_g\d+$
import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "^.*_g[0-9]+$";
final String string = "file_g001\n"
     + "file_g222\n"
     + "file_some_other_words_g222\n"
     + "file_g\n"
     + "g_file_z999";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}