Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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
使用regexjava替换特定字符前后的字符串_Java_Regex - Fatal编程技术网

使用regexjava替换特定字符前后的字符串

使用regexjava替换特定字符前后的字符串,java,regex,Java,Regex,我的努力:我试着看类似的问题,但我无法找到我的答案。我自己也尝试过使用web()来解决这个问题,但我就是找不到正确的答案。尝试使用myString.replaceAll(“u.+/[^.]*/”,”) 我有一个字符串:string myString=“hello\u AD123.mp3” 我想使用regexjava来删除下划线后面的所有内容(包括它),并在(.mp3)之前停止。我该怎么做 所以我希望最终结果如下:myString=“hello.mp3”您的正则表达式无法工作,因为它与字符串中缺少

我的努力:我试着看类似的问题,但我无法找到我的答案。我自己也尝试过使用web()来解决这个问题,但我就是找不到正确的答案。尝试使用
myString.replaceAll(“u.+/[^.]*/”,”)

我有一个字符串:
string myString=“hello\u AD123.mp3”

我想使用regexjava来删除下划线后面的所有内容(包括它),并在(.mp3)之前停止。我该怎么做


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

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

  • -下划线后跟
  • +
    -换行符以外的一个或多个任意字符
  • /
    -文字符号
    /
  • [^.]*
    -除点以外的零个或多个字符
  • /
    -文字
    /
输入字符串中没有斜杠

你可以用

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

模式
\u[^.]*
匹配一个下划线,然后匹配除文字点以外的0+个字符如果字符串在
.mp3
之前有点,
“.*.[.]”
匹配到最后一个
,需要用
替换

请参阅和

详细信息

  • -匹配
  • [^.]*
    -匹配零个或多个字符(由于
    *
    量词),而不是(由于使用了求反字符类,请参见
    [^…]
    )文字点(如字符类内的
    […]
    )被视为文字点字符(句点,句点)

  • *[.]
    -匹配0个或更多字符(新行除外),直到最后一个文字点(使用该点,因此替换模式应为


之所以使用
.replaceFirst()
,是因为我们只需要执行一次搜索和替换操作。当匹配的子字符串匹配时,它将被替换为空字符串,因为替换模式是

myString=myString.replaceFirst(“\u[^.]*”,”)
它确实删除了,我已经试过了。你介意一个接一个地解释一下你使用的正则表达式吗?我不明白为什么会这样使用它。不过它是有效的!ThanksOP想要删除“u”和“.mp3”之间的字符,因此它应该像
myString.replaceFirst(“.\\\.mp3”,“_.mp3”);
或者(使用匹配组)
myString.replaceFirst(“(\uu)(.*)(\\.mp3)”,“$1$3”);
@Andy:我明白你的意思。当然,贪婪的点匹配模式可能更有用。