Отмена длительного соответствия regex?

Модальное диалоговое окно [Lightbox] ( http://en.wikipedia.org/wiki/Lightbox_ (JavaScript)) в некоторых случаях представляется эффективным методом (вывод Web 2.0, но может быть применено в другие контексты).

Еще один момент: если вы можете отказаться от диалогового окна для функции Undo (Gmail для одного отстаивал эту концепцию в качестве стандартного поведения веб-приложения), то это следует учитывать.

19
задан 26 May 2009 в 13:40
поделиться

2 ответа

От Heritrix: ( crawler.archive.org )

/**
 * CharSequence that noticed thread interrupts -- as might be necessary 
 * to recover from a loose regex on unexpected challenging input. 
 * 
 * @author gojomo
 */
public class InterruptibleCharSequence implements CharSequence {
    CharSequence inner;
    // public long counter = 0; 

    public InterruptibleCharSequence(CharSequence inner) {
        super();
        this.inner = inner;
    }

    public char charAt(int index) {
        if (Thread.interrupted()) { // clears flag if set
            throw new RuntimeException(new InterruptedException());
        }
        // counter++;
        return inner.charAt(index);
    }

    public int length() {
        return inner.length();
    }

    public CharSequence subSequence(int start, int end) {
        return new InterruptibleCharSequence(inner.subSequence(start, end));
    }

    @Override
    public String toString() {
        return inner.toString();
    }
}

Оберните свой CharSequence этим, и прерывания потоков будут работать ...

42
ответ дан 30 November 2019 в 03:03
поделиться

Другой обходной путь - ограничить область сопоставителя, затем вызвать find () , повторяя это до тех пор, пока поток не будет прерван или совпадение не будет найдено.

0
ответ дан 30 November 2019 в 03:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: