2010-07-08 5 views
0

quelqu'un peut suggérer une expression régulière pour le texte ci-dessousSuggérer expression régulière

Signature

texte texte texte plus

texte

...

texte )

J'ai essayé Signature\n.*\) mais cela ne fonctionne que pour

Signature
texte )

Fondamentalement, une expression qui commence par un texte donné, permet à plusieurs nouvelles lignes, et se termine par ).

Merci

+0

Il ya de nouvelles lignes entre le texte et le texte ..dont savoir pourquoi il a enveloppé :( –

+3

Veuillez accepter les réponses à vos questions existantes en cliquant sur la case à cocher à gauche de la réponse qui vous a été la plus utile. Merci! –

+0

ici flex signifie gnu analyseur lexical (comme dans lex et yacc) pas adobe flash –

Répondre

4

Le problème est que . ne correspond pas à nouveau doublée par défaut.

Une option simple:

/signature[^)]*\)/i 

[^)]* correspond à tous les caractères en plus ).

Je ne suis pas sûr si vous avez un drapeau Dot-All en flex. JavaScript drapeau /s est manquant, et le travail commun est autour de:

/signature[\s\S]*?\)/i 

Dans ce cas, vous voulez probablement utiliser un quantificateur paresseux, *?, de sorte que vous correspondez jusqu'à ce que le premier ), et non la dernière.

+2

+1 classes de caractères Négligé est le chemin à parcourir. – quantumSoup

0

essayer

var pattern:RegExp = /^Signature.+\\)/m; 
+2

Pas familier avec l'API regex de Flex, mais ne devrait-il pas être le drapeau 's' au lieu du drapeau' m'? Et le double antislash est-il nécessaire? –

0

Vous pouvez utiliser suivant regex

\ bSignature [\ s \ S] * [)]

Ce regex regardera d'abord à la signature, suivi d'un caractère qui inclut des caractères alphanumériques, \ n, etc suivi de)

0

Flex prend en charge les classes de caractères nuls, de sorte que vous pouvez faire:

/* definition section */ 

%% 

Signature[^)]*\) { /* custom code */ } 

%% 

/* user subroutines */