gpt4 book ai didi

java - 使用正则表达式java替换字符串中某个字符的前后

转载 作者:行者123 更新时间:2023-11-30 07:27:29 24 4
gpt4 key购买 nike

我的努力:我尝试查看类似的问题,但我无法找出答案。我也尝试使用网络( https://www.cheatography.com/davechild/cheat-sheets/regular-expressions/ )自己解决这个问题,但我只是无法得到正确的答案。尝试使用 myString.replaceAll("_.+/[^.]*/", "");

我有一个字符串:String myString = "hello_AD123.mp3";

我想使用正则表达式java来删除下划线(包括它)之后的所有内容并在(.mp3)之前停止。我该怎么做?

所以我希望最终结果如下:myString = "hello.mp3";

最佳答案

您的正则表达式不起作用,因为它与字符串中缺少的内容匹配:

  • _ - 下划线后跟...
  • .+ - 一个或多个除换行符之外的任何字符
  • / - 文字 / 符号
  • [^.]* - 除点之外的零个或多个字符
  • / - 文字 /

您的输入字符串中没有斜杠。

你可以使用

String myString = "hello_AD123.mp3";
myString = myString.replaceFirst("_.*[.]", ".");
// OR myString = myString.replaceFirst("_[^.]*", "");
System.out.println(myString);

请参阅IDEONE Java demo

模式 _[^.]* 匹配一个下划线,然后匹配除文字点之外的 0 个以上字符。 如果字符串在 .mp3 之前有点,则 "_.*[.]" 匹配 _ 最多最后一个 .,需要替换为 ..

请参阅regex Demo 1Demo 2 .

详细信息:

  • _ - 匹配 _
  • [^.]* - 匹配零个或多个(由于 * 量词)字符(因为使用了否定字符类,请参阅 [^...])文字点(如字符类中的 . - [...] - 被视为文字点字符(句号、句号)。

  • .*[.] - 匹配除换行符之外的 0 个或多个字符,直到最后一个文字点(消耗该点,因此,替换模式应为 ” .")。

使用.replaceFirst()是因为我们只需要执行单个搜索和替换操作。当匹配的子字符串匹配时,它会被替换为空字符串,因为替换模式为 ""

关于java - 使用正则表达式java替换字符串中某个字符的前后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36626364/

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