gpt4 book ai didi

java - 我将如何使用正则表达式输出一组特定的字符串 java?

转载 作者:搜寻专家 更新时间:2023-11-01 03:48:28 25 4
gpt4 key购买 nike

我有一个很长的电影标题和音乐专辑标题的字符串输出。

例如[(像素质量)(发行年份)MovieTitle.ext,...... Albumname-artistname.ext]

[(HD 1080p) (2015) Batman vs Superman.mov,.......tearsinheavan-ericclapton.mp3,.......]

我正在尝试使用正则表达式来区分电影和音乐。电影具有像素质量、发行日期、动画标题和扩展名(.mov、.flv...等),而音乐具有专辑名称后跟 - 和艺术家姓名和像 (.mp3,.aax.......) 这样的扩展名。

电影的预期输出为 (Pixel Quality) (Year of Release) MovieTitle.ext,音乐为 Albumname-artistname.ext

我不太熟悉正则表达式我只知道如何匹配单个字符或特定单词。但是我似乎无法输出整个像素质量、发行年份和 movietitle.ext。只有我匹配的特定单词或单个字符。

我曾经尝试找到“类别”的方法。

public void FindPatterns () {

String patternFilms = ("REGEX PATTERN?");
Pattern pattern = Pattern.compile(patternFilms);

for (String name : names) {
Matcher matcher = pattern.matcher(name);

while(matcher.find()){

System.out.println(matcher.group());
}
}

}

更新:

我试图在我的代码中摆弄正则表达式模式,除了语法错误被标记为要求我删除标记外,我什么也没得到,我找不到足够清楚的例子来说明我想要实现的目标.

以防万一我一直将模式放在错误的位置,我一直将正则表达式模式放在 String pattern"REGEX PATTERN? 中只是一个占位符,我在其中询问是否是放置模式的正确位置。

最佳答案

在 Java 方面,您的代码需要将每个单独的组提取为命名组或索引组。不过,那是(相对)容易的部分。在你到达那一点之前,听起来你需要关于你的模式的帮助,所以让我们先看一下。

逐个构建您的正则表达式。允许您快速迭代正则表达式的工具很有用。我喜欢https://regex101.com/ .

您需要做的是从输入字符串中选择“匹配组”。所以你想要匹配所有你可以丢弃的东西(比如逗号和括号),以及你想要提取的数据。对于您要提取的数据,将每条数据的正则表达式括在括号中以表示该组。

您的输入字符串包含许多在正则表达式中具有特殊含义的字符,例如 [(。因此,如果您想显式匹配它们,则需要将它们“转义”。另外请记住,当您将正则表达式转换为 Java 时,\ 字符本身就是 Java 字符串的转义字符,因此它也需要使用另一个 \< 进行转义。因此,例如,匹配 [ 字符的正则表达式将被定义为 \\[

因此,从匹配整个输入开始:

^.*$

^ 字符是“ anchor ”,分别表示“输入的开始”和“输入的结束”。 . 只匹配任何字符,* 匹配前一个标记(任何字符)0、1 或更多次(所以一切)。

在正则表达式 101 中,这将突出显示整个输入。

整个字符串被方括号括起来,所以让我们匹配它们,记住它们需要被转义:

^\[.*\]$

现在让我们开始分解各个组件。前两个由括号分隔,记住我们需要转义括号,所以让我们匹配 (something) (something) something:

^\[\(.*\) \(.*\) .*\]$

现在应该再次突出显示整个输入。让我们通过将它们括在括号中来提取我们刚刚识别的两条数据:

^\[\((.*)\) \((.*)\) .*\]$

现在您应该会看到匹配项突出显示并显示在右侧。现在继续构建正则表达式,将最后一个 .* 替换为更具体的匹配项。

如果您遇到任何特定问题,请评论此答案!

关于java - 我将如何使用正则表达式输出一组特定的字符串 java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36100586/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com