Portál AbcLinuxu, 11. května 2024 07:34


Dotaz: Regulární výraz kontrola pro postupné zadání textu.

25.3.2017 15:32 ZAH | skóre: 43 | blog: ZAH
Regulární výraz kontrola pro postupné zadání textu.
Přečteno: 282×
Odpovědět | Admin
Nezná někdo trik pro regulární výrazy jak z výrazu, který vyhodnocuje celkově zadané jednoduše udělat výraz, který vyhodnotí zadaní po každém znaku.

Například mám výraz ^(0|[\+\-]?[1-9][0-9]*)$ (kontrola Integer čísla s možností znaménka nesmí být vedoucí nuly neomezená délka).

Potřebuji postupně zadávat od prvního znaku a kontrolovat po zadání každého znaku.Pro uvedený příklad zadání + nebo mínus vyhodnotí jako chybu. Samozřejmě uvedené není problém doplnit o alternativu, ale jde mi o obecný princip.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

25.3.2017 15:49 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Regulární výraz kontrola pro postupné zadání textu.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Možná hledáš Thompsonův algoritmus.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
25.3.2017 16:20 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: Regulární výraz kontrola pro postupné zadání textu.
Měl bych doplnit, že mi jde o kontrolu vstupů v javě, kde filtruji vstup pomocí rozšíření třídy DocumentFilter.
..
..
public void insertString(FilterBypass fb, int offs, String str, AttributeSet a) throws BadLocationException {
 String text = fb.getDocument().getText(0, fb.getDocument().getLength());
	text += str;
	if ((fb.getDocument().getLength() + str.length()) < getFilterParams().getMaxCharacters()
		&& text.matches(getFilterParams().getStringMatches())) {
		super.insertString(fb, offs, str, a);
		} else {
		Toolkit.getDefaultToolkit().beep();
		}
	}
...
Řešení 1× (ZAH (tazatel))
25.3.2017 20:56 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Regulární výraz kontrola pro postupné zadání textu.
Odpovědět | | Sbalit | Link | Blokovat | Admin
PCRE podporuje partial matching.
25.3.2017 23:37 ZAH | skóre: 43 | blog: ZAH
Rozbalit Rozbalit vše Re: Regulární výraz kontrola pro postupné zadání textu.
Trefa, Java to také podporuje.
private Pattern pattern;
...
public Pattern getPattern() {
    if (pattern == null)
	pattern = Pattern.compile(getFilterParams().getStringMatches());
    return pattern;
}
 
public boolean matchInputString(String s) {
    Matcher matcher = getPattern().matcher(s);
    return matcher.matches() || matcher.hitEnd();
}

...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.