I'd like to create a RegEx Pattern statically, but I think I have the syntax wrong?
static {
Pattern noHREF = Pattern.compile("<a.+?>", Pattern.CASE_INSENSITIVE);
}
public static String getStringWithHREFsRemoved(String html) {
Matcher m = noHREF.matcher(html);
etc.....
You need to put the noHREF variable as a static member variable of your class.
static Pattern noHREF = Pattern.compile("<a.+?>", Pattern.CASE_INSENSITIVE);
public static String getStringWithHREFsRemoved(String html) {
Matcher m = noHREF.matcher(html);
// ...
In the code you wrote in your question, the noHREF variable is imply a local (temporary) variable whose scope is between static { and }.
When you declare
static {
Pattern noHREF = Pattern.compile("<a.+?>", Pattern.CASE_INSENSITIVE);
}
This is an anonymous static method that is executed when the class is loaded, and the noHREF declaration is a local variable in that method, and not a static field as you are expected. To get a static field, use the declaration
static Pattern noHREF = Pattern.compile("<a.+?>", Pattern.CASE_INSENSITIVE);
This will then allow you to access noHREF from a static method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With