languagetool-org/languagetool · error · RuntimeException

Invalid syntax for key/value, expected 'key:value', got: '${

Error message

Invalid syntax for key/value, expected 'key:value', got: '${arg}'

What it means

Argument-parsing guard in RegexRuleFilterEvaluator.getResolvedArguments: while splitting the filter's args attribute on whitespace, a token was found that does not contain the 'key:value' separator, so it cannot be turned into a filter argument. The faulty input is the args string of the <filter> element, which must be a space-separated list of key:value pairs.

Source

Thrown at languagetool-core/src/main/java/org/languagetool/rules/patterns/RegexRuleFilterEvaluator.java:53

  private final RegexRuleFilter filter;

  public RegexRuleFilterEvaluator(RegexRuleFilter filter) {
    this.filter = filter;
  }

  @Nullable
  public RuleMatch runFilter(String filterArgs, RuleMatch ruleMatch, AnalyzedSentence sentenceObj, Matcher patternMatcher) {
    Map<String,String> args = getResolvedArguments(filterArgs);
    return filter.acceptRuleMatch(ruleMatch, args, sentenceObj, patternMatcher);
  }

  private Map<String,String> getResolvedArguments(String filterArgs) {
    Map<String,String> result = new HashMap<>();
    String[] arguments = filterArgs.split("\\s+");
    for (String arg : arguments) {
      int delimPos = arg.indexOf(':');
      if (delimPos == -1) {
        throw new RuntimeException("Invalid syntax for key/value, expected 'key:value', got: '" + arg + "'");
      }
      String key = arg.substring(0, delimPos);
      String val = arg.substring(delimPos + 1);
      result.put(key, val);
    }
    return result;
  }

}

View on GitHub (pinned to 2e990059ce)

Solutions

  1. Write the filter arguments as key:value pairs separated by spaces, e.g. args="antiPatterns:foo|bar caseSensitive:yes"
  2. Add the missing colon to the argument token reported in the exception
  3. Remove stray whitespace-only or malformed tokens from the args attribute
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at languagetool-core/src/main/java/org/languagetool/rules/patterns/RegexRuleFilterEvaluator.java:53 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of languagetool-org/languagetool@2e990059ce (2026-09-06). Data as JSON: /api/errors/d867a99bf498e2a2. Report an issue: GitHub.