2010-03-02 6 views
0

Je me demande combien de temps la chaîne d'expression peut-on utiliser dans la fonction REGEXP dans MATLAB? Par exemple pour lister plusieurs mots pour correspondre, comme 'abc|defg|hij|...'.Longueur maximale de la chaîne d'expression dans regexp (MATLAB)

Fonctionne bien pour moi avec environ 500 mots (~ 3K caractères), mais avec une très grande liste (> 300K) MATLAB vient de tomber en panne sans aucun journal des erreurs. Quelqu'un a une idée sur la limite? Peut-il dépendre de la syntaxe d'expression? Je sais que je peux utiliser un tableau de chaînes de caractères, mais dans ce cas, je ne peux pas utiliser un nombre arbitraire de chaînes pour faire correspondre. De toute façon, je n'ai pas besoin d'alternatives, juste la limite s'il vous plait.

Répondre

1

Cela peut être dû à des limitations de mémoire et vous pouvez augmenter votre mémoire java en utilisant java.opts. Recherchez java.opts et matlab pour savoir comment augmenter la taille de votre mémoire de travail.

Bien que, je ne crois pas que ce soit l'utilisation prévue de regexp.

La longueur maximale dépend de la plate-forme. Voir here pour plus de détails.

+1

D'accord. La limite * théorique * est probablement la taille de la chaîne qui contient la regex, mais c'est discutable. C'est juste une très mauvaise idée d'utiliser une regex comme ça. –

+0

Sur mon ancienne machine avec XP 32 bits, je peux créer une chaîne de 5 caractères sur 7 (100 Mo en mémoire). Bien que regexp ait planté avec la chaîne d'expression ~ 1e6 caractères (après que la chaîne a été stockée avec succès dans la mémoire). Donc, il ne semble pas seulement un problème de mémoire pour contenir la chaîne, mais l'implémentation regexp, comment il utilise la mémoire en cours d'exécution. Je suis d'accord que ce n'est pas la meilleure utilisation de regexp, plus d'intérêt académique. – yuk

Questions connexes