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