Java正则表达式逐字节

时间:2018-05-28 15:12:52

标签: java regex online-algorithm

我正在寻找一种增量应用正则表达式模式的方法,即我正在寻找一个匹配器,我可以在进入时更新字符,并告诉我每个字符是否仍然匹配。 / p>

以下是代码中的说明(MagicMatcherIAmLookingFor是我要找的东西,characterSource是我可以查询新角色的东西,比如InputStreamReader就此问题):

final Pattern pattern = Pattern.compile("[0-9]+");
final MagicMatcherIAmLookingFor incrementalMatcher = pattern.magic();
final StringBuilder stringBuilder = new StringBuilder();
char character;
while (characterSource.isNotEOF()) {
    character = characterSource.getNextCharacter();
    incrementalMatcher.add(character);
    if (incrementalMatcher.matches()) {
        stringBuilder.append(character);
    } else {
        return result(
             stringBuilder.toString(),
             remaining(character, characterSource)
        );
    }
}

我没有找到像这样使用现有java.util.regex.Pattern的方法,但也许我没找到它。或者是否有内置正则表达式的替代库,它提供了这样的功能?

我没有任何运气在网上搜索它 - 所有结果都完全淹没了如何使用java正则表达式。

我的目标是Java 8 +

1 个答案:

答案 0 :(得分:0)

这是你要找的那种物体吗?

void QDialogValidator::checkValidity(QLineEdit * l) {
  if (!l) return;
  QString text = l->text();
  int pos;
  bool isValid = l->validator()->validate(text, pos) == QValidator::Acceptable;
  setSelect(m_validWidgets, isValid, (QWidget*)l);
  if (!l->property("invalid").toBool() != isValid) {
    l->setProperty("invalid", !isValid);
    l->style()->unpolish(l);
    l->style()->polish(l);
  }
  emit newValidity(m_validWidgets.count() == m_needsValid);
}