无法找出有效的正则表达式:
whateverishere$$annofun$number$WHAT_NEEDS_EXTRACTION$$number$
我想删除$$anonfun
之前的所有字符,$$anonfun
本身,然后删除$number$
组。
我有这个:
val index = fullName.indexOf("$$anonfun")
if (index != -1) {
val str = fullName.substring(index + 9, fullName.length)
str.replaceAll("[(\\$\\d+\\$)|(\\$)]", "")
} else {
fullName.replaceAll("[(\\$\\d+\\$)]|(\\$)", "")
}
输入:无论如何$$ annofun $ number $ WHAT_NEEDS_EXTRACTION $$ number $
输出:WHAT_NEEDS_EXTRACTION
答案 0 :(得分:1)
试试这个"[^$]*\\$\\$[^$]*\\$[^$]*\\$|\\$\\$[^\\$]*\\$"
String replaced = "whateverishere$$annofun$number$WHAT_NEEDS_EXTRACTION$$number$"
.replaceAll("[^$]*\\$\\$[^$]*\\$[^$]*\\$|\\$\\$[^\\$]*\\$",
"");
System.out.println(replaced);
但我不确定它是否在scala中有效。
答案 1 :(得分:0)
我不确定它是否适用于scala但是在Java中你可以将你有趣的部分包装在组中并用该组中的匹配替换整个匹配。
"whateverishere$$annofun$number$WHAT_NEEDS_EXTRACTION$number$"
.replaceAll(
"whateverishere\\$\\$annofun\\$number\\$(WHAT_NEEDS_EXTRACTION)\\$number\\$",
"$1");