Reputation: 68750
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.....
Upvotes: 3
Views: 840
Reputation: 421030
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 }
.
Upvotes: 3
Reputation: 57707
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.
Upvotes: 2