我正在寻找一种增量应用正则表达式模式的方法,即我正在寻找一个匹配器,我可以在进入时更新字符,并告诉我每个字符是否仍然匹配。 / 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 +
答案 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);
}