Gia*_*rlo 1 java regex string replace
我有这个java字符串:
String bla = "<my:string>invalid_content</my:string>";
Run Code Online (Sandbox Code Playgroud)
如何更换"invalid_content"文章?
我知道我应该使用这样的东西:
bla.replaceAll(regex,"new_content");
Run Code Online (Sandbox Code Playgroud)
为了有:
"<my:string>new_content</my:string>";
Run Code Online (Sandbox Code Playgroud)
但我无法发现如何创建正确的正则表达式
请帮忙 :)
你可以做点什么
String ResultString = subjectString.replaceAll("(<my:string>)(.*)(</my:string>)", "$1whatever$3");
Run Code Online (Sandbox Code Playgroud)
Mark的答案可行,但可以通过两个简单的更改来改进:
赠送:
String ResultString = SubjectString.replaceAll
( "(<my:string>).*?(</my:string>)" , "$1whatever$2" );
Run Code Online (Sandbox Code Playgroud)
但这仍然不是我写的方式 - 可以使用lookbehind和lookahead简化替换,并且可以避免重复标记名称,如下所示:
String ResultString = SubjectString.replaceAll
( "(?<=<(my:string)>).*?(?=</\1>)" , "whatever" );
Run Code Online (Sandbox Code Playgroud)
当然,对于那些还不了解正则表达式的人来说,后者可能不那么友好 - 但是它更易于维护/灵活,所以如果你需要匹配的不仅仅是我的:字符串标签,那么值得使用.