From your question it doesn't seem necessary to use lookaround, so you could just replace all %
with \w*
Snippet:
String tested = "Just a regular superbadwording sentece.";
String bad = "%badword%";
bad = bad.replaceAll("%", "\\\\w*");
Pattern p = Pattern.compile(bad);
Matcher m = p.matcher(tested);
while(m.find()) {
String found = m.group();
System.out.println(found);
}
\w doesn't match #,-,etc. so I think \S is better here