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谢谢,已更新。