Java 使用正则表达式在文件夹路径中查找字符串

Java 使用正则表达式在文件夹路径中查找字符串,java,regex,string,Java,Regex,String,我想知道你能否帮我解决以下问题:我正在尝试使用正则表达式在文件夹路径中查找字符串 例如: C:\Users\user\Documents\mystarfleet34academybadge 我只想找到使用正则表达式的“fleet34academy”,并用java输出结果。我不熟悉使用正则表达式公式,所以对于不断出现的问题,我深表歉意。我已经考虑过使用split,但无法使其发挥作用 谢谢试试这个: String pattern = ".*mystar(.*)badge"; System.out.

我想知道你能否帮我解决以下问题:我正在尝试使用正则表达式在文件夹路径中查找字符串

例如:

C:\Users\user\Documents\mystarfleet34academybadge
我只想找到使用正则表达式的“fleet34academy”,并用java输出结果。我不熟悉使用正则表达式公式,所以对于不断出现的问题,我深表歉意。我已经考虑过使用split,但无法使其发挥作用

谢谢

试试这个:

String pattern = ".*mystar(.*)badge";
System.out.println("C:\\Users\\user\\Documents\\mystarfleet34academybadge".replaceAll(pattern, "$1")); 
输出:

fleet34academy
fleet110academy
更新

String pattern = "^.*mystar(fleet[0-9]*academy)badge.*$";
System.out.println("C:\\Users\\user\\Documents\\mystarfleet110academybadge".replaceAll(pattern, "$1"));
输出:

fleet34academy
fleet110academy
检查此代码段

import java.util.regex.Matcher;
import java.util.regex.Pattern;

class New {
public static void main (String [] args) 
{
        String str="fleet34academy";

        String path="C:\\Users\\user\\Documents\\mystarfleet34academybadge";

        Pattern p = Pattern.compile(str,Pattern.CASE_INSENSITIVE|Pattern.LITERAL);
        Matcher m = p.matcher(path);
        while (m.find()) 
        {
            System.out.print("Start index: " + m.start());
            System.out.print(" End index: " + m.end());
            System.out.println(" Found: " + m.group());
        }



}
}
我们在java.util.regex包中有
Pattern
Matcher

Pattern
中,我们使用静态方法compile输入属性,例如,要匹配的字符串以及是否区分大小写等,您可以在此处检查

Matcher
对象中,我们传递一个字符串,我们必须在其中找到模式


m.find()
被调用以查找模式

是否要获取文件?或者仅仅是字符串名称?目前,我将整个文件夹名称输出为“mystarfleet34academybadge”,但我只想将“fleet34academy”作为输出是什么使“fleet34academy”成为匹配的一部分,而其余部分则不是?这是一个更普遍的规则还是一个单一的情况?(在这种情况下,您不需要正则表达式)您正在寻找
'mystar(.*)badge'
?您应该将模式标志与
|
一起使用,而不是
+
。哦,是的,我现在已经更改了,感谢您的更正,但没有解决问题,问题是查找字符串,而不是模式,它不像,RegexU提供的.*mystar(.*)标记将用于他的文件夹,他的意思是任何文件夹名称都可以在路径中,并在路径中找到该字符串。字符串不会总是出现在mystarbadge之间或mystar之前!我想使用正则表达式的原因是数字是不断变化的,但数字两边的字符串永远不会改变。例如:fleet34academy可以是fleet86academy或fleet109academy.+1,但我建议您在两端锚定匹配(使用
^.*
*$
),以确保它完全消耗整个字符串。您应该可以用更具体的内容来替换
(.*)
,但我们仍然不知道允许使用哪些字符。@Alanmore谢谢,已更新。