Je tente de faire matcher une expression régulière avec un texte suivi
d'une date. Je cherche un matche parfait mais ca ne fonctionne toujours
pas... je crois qu il y a un problème avec les parenthèses mais je
trouve pas laquelle :/
ex :
Bonjour, je m appelle S.Laurent, 2003a.
mon expression régulière :
"^(\w+)(?:[(\w+)|(,?)|(.?)]+),\s(19|20)\d{2}[a-z]?\\."
Est ce que vous auriez une idée d'ou ca vient ??
Merci,
Laurent
Bonjour, je m appelle S.Laurent, 2003a. mon expression régulière : "^(w+)(?:[(w+)|(,?)|(.?)]+),s(19|20)d{2}[a-z]?."
je pense qu'il faut bien decouper le match de 19 ou 20 en (19)|(20) : ^(w+)(?:[(w+)|(,?)|(.?)]+),s(19)|(20)d{2}[a-z]?.
-- Dom
Ronan Le Hy
Laurent a écrit:
Je tente de faire matcher une expression régulière avec un texte suivi d'une date. ex: Bonjour, je m appelle S.Laurent, 2003a. mon expression régulière : "^(w+)(?:[(w+)|(,?)|(.?)]+),s(19|20)d{2}[a-z]?."
Votre description de ce que vous essayez de faire n'est pas suffisante (que voulez-vous reconnaître/valider ? que voulez-vous capturer ?). Un exemple ne suffit pas.
Ceci dit, une classe de caractères [...] interprète les |,+,?,(,) comme des caractères ordinaires. Et je me demande pourquoi vous nous donnez votre expression régulière entre doubles guillemets (les w et s vont se faire interpréter, et -w va dire "Unrecognized escape w passed through at...").
Sinon, remplacer (19|20) par (19)|(20) est une mauvaise idée. | a une précédence très basse.
-- Ronan
In a reflective language it doesn't take a Leonardo class Perl hacker to produce a flakey implementation of "switch", it's something a casual user of the language can do reliably and routinely. Peter da Silva in hates-software.all, about Perl 5
Laurent a écrit:
Je tente de faire matcher une expression régulière avec un texte suivi
d'une date.
ex:
Bonjour, je m appelle S.Laurent, 2003a.
mon expression régulière :
"^(w+)(?:[(w+)|(,?)|(.?)]+),s(19|20)d{2}[a-z]?\."
Votre description de ce que vous essayez de faire n'est pas suffisante
(que voulez-vous reconnaître/valider ? que voulez-vous capturer ?). Un
exemple ne suffit pas.
Ceci dit, une classe de caractères [...] interprète les |,+,?,(,) comme
des caractères ordinaires. Et je me demande pourquoi vous nous donnez
votre expression régulière entre doubles guillemets (les w et s vont
se faire interpréter, et -w va dire "Unrecognized escape w passed
through at...").
Sinon, remplacer (19|20) par (19)|(20) est une mauvaise idée. | a une
précédence très basse.
--
Ronan
In a reflective language it doesn't take a Leonardo class Perl hacker to
produce a flakey implementation of "switch", it's something a casual
user of the language can do reliably and routinely.
Peter da Silva in hates-software.all, about Perl 5
Je tente de faire matcher une expression régulière avec un texte suivi d'une date. ex: Bonjour, je m appelle S.Laurent, 2003a. mon expression régulière : "^(w+)(?:[(w+)|(,?)|(.?)]+),s(19|20)d{2}[a-z]?."
Votre description de ce que vous essayez de faire n'est pas suffisante (que voulez-vous reconnaître/valider ? que voulez-vous capturer ?). Un exemple ne suffit pas.
Ceci dit, une classe de caractères [...] interprète les |,+,?,(,) comme des caractères ordinaires. Et je me demande pourquoi vous nous donnez votre expression régulière entre doubles guillemets (les w et s vont se faire interpréter, et -w va dire "Unrecognized escape w passed through at...").
Sinon, remplacer (19|20) par (19)|(20) est une mauvaise idée. | a une précédence très basse.
-- Ronan
In a reflective language it doesn't take a Leonardo class Perl hacker to produce a flakey implementation of "switch", it's something a casual user of the language can do reliably and routinely. Peter da Silva in hates-software.all, about Perl 5
Laurent
Bonjour,
Ronan Le Hy wrote:
Laurent a écrit:
Je tente de faire matcher une expression régulière avec un texte suivi d'une date.
ex:
Bonjour, je m appelle S.Laurent, 2003a. mon expression régulière : "^(w+)(?:[(w+)|(,?)|(.?)]+),s(19|20)d{2}[a-z]?."
Votre description de ce que vous essayez de faire n'est pas suffisante (que voulez-vous reconnaître/valider ? que voulez-vous capturer ?). Un exemple ne suffit pas. Le but de mon expression est de retrouvée des références
bibliographiques à la fin de différents textes. J'ai remarqué quelles sont en général de la forme : auteur+, dates ou auteur+, (date) ou date, auteur+ ou (date), auteurs+, il n'y pas vraiment de normes, c'est pas trop évident, par exemple, pour les majuscules ou les minuscules ca change une fois sur 2... Apres mon post, j ai réussi à trouver un premier type de référence grace à cette expression : ^([a-zA-Z]+)((?:(w+))|(?:(,))|(?:(.))*),s(19|20)d{2}[a-z]?. mais en fait je comprends pas bien ce qu'elle fait :P, j ai essayé de mettre un devant le premier point et ca ne fonctionne plus apres ?? Pourtant pour signifier que je cherche précisément un '.' (comme dans C. Dickens) je pensais que c'était la bonne manière ?
Ceci dit, une classe de caractères [...] interprète les |,+,?,(,) comme des caractères ordinaires. Et je me demande pourquoi vous nous donnez votre expression régulière entre doubles guillemets (les w et s vont se faire interpréter, et -w va dire "Unrecognized escape w passed through at..."). Y pas vraiment de raison, c'était pour délimiter...
Sinon, remplacer (19|20) par (19)|(20) est une mauvaise idée. | a une précédence très basse. Merci pour le conseil,
et merci pour ta réponse,
Laurent ps : j'ai commandé Maitrise des expressions régulières (2001) chez oreilly :), ca devrait m'aider.
Bonjour,
Ronan Le Hy wrote:
Laurent a écrit:
Je tente de faire matcher une expression régulière avec un texte suivi
d'une date.
ex:
Bonjour, je m appelle S.Laurent, 2003a.
mon expression régulière :
"^(w+)(?:[(w+)|(,?)|(.?)]+),s(19|20)d{2}[a-z]?\."
Votre description de ce que vous essayez de faire n'est pas suffisante
(que voulez-vous reconnaître/valider ? que voulez-vous capturer ?). Un
exemple ne suffit pas.
Le but de mon expression est de retrouvée des références
bibliographiques à la fin de différents textes.
J'ai remarqué quelles sont en général de la forme : auteur+, dates ou
auteur+, (date) ou date, auteur+ ou (date), auteurs+, il n'y pas
vraiment de normes, c'est pas trop évident, par exemple, pour les
majuscules ou les minuscules ca change une fois sur 2...
Apres mon post, j ai réussi à trouver un premier type de référence grace
à cette expression :
^([a-zA-Z]+)((?:(w+))|(?:(,))|(?:(.))*),s(19|20)d{2}[a-z]?.
mais en fait je comprends pas bien ce qu'elle fait :P, j ai essayé de
mettre un devant le premier point et ca ne fonctionne plus apres ??
Pourtant pour signifier que je cherche précisément un '.' (comme dans C.
Dickens) je pensais que c'était la bonne manière ?
Ceci dit, une classe de caractères [...] interprète les |,+,?,(,) comme
des caractères ordinaires. Et je me demande pourquoi vous nous donnez
votre expression régulière entre doubles guillemets (les w et s vont
se faire interpréter, et -w va dire "Unrecognized escape w passed
through at...").
Y pas vraiment de raison, c'était pour délimiter...
Sinon, remplacer (19|20) par (19)|(20) est une mauvaise idée. | a une
précédence très basse.
Merci pour le conseil,
et merci pour ta réponse,
Laurent
ps : j'ai commandé Maitrise des expressions régulières (2001) chez
oreilly :), ca devrait m'aider.
Je tente de faire matcher une expression régulière avec un texte suivi d'une date.
ex:
Bonjour, je m appelle S.Laurent, 2003a. mon expression régulière : "^(w+)(?:[(w+)|(,?)|(.?)]+),s(19|20)d{2}[a-z]?."
Votre description de ce que vous essayez de faire n'est pas suffisante (que voulez-vous reconnaître/valider ? que voulez-vous capturer ?). Un exemple ne suffit pas. Le but de mon expression est de retrouvée des références
bibliographiques à la fin de différents textes. J'ai remarqué quelles sont en général de la forme : auteur+, dates ou auteur+, (date) ou date, auteur+ ou (date), auteurs+, il n'y pas vraiment de normes, c'est pas trop évident, par exemple, pour les majuscules ou les minuscules ca change une fois sur 2... Apres mon post, j ai réussi à trouver un premier type de référence grace à cette expression : ^([a-zA-Z]+)((?:(w+))|(?:(,))|(?:(.))*),s(19|20)d{2}[a-z]?. mais en fait je comprends pas bien ce qu'elle fait :P, j ai essayé de mettre un devant le premier point et ca ne fonctionne plus apres ?? Pourtant pour signifier que je cherche précisément un '.' (comme dans C. Dickens) je pensais que c'était la bonne manière ?
Ceci dit, une classe de caractères [...] interprète les |,+,?,(,) comme des caractères ordinaires. Et je me demande pourquoi vous nous donnez votre expression régulière entre doubles guillemets (les w et s vont se faire interpréter, et -w va dire "Unrecognized escape w passed through at..."). Y pas vraiment de raison, c'était pour délimiter...
Sinon, remplacer (19|20) par (19)|(20) est une mauvaise idée. | a une précédence très basse. Merci pour le conseil,
et merci pour ta réponse,
Laurent ps : j'ai commandé Maitrise des expressions régulières (2001) chez oreilly :), ca devrait m'aider.
Ronan Le Hy
Laurent a écrit:
Ronan Le Hy wrote:
Laurent a écrit:
Je tente de faire matcher une expression régulière avec un texte suivi d'une date. ex: Bonjour, je m appelle S.Laurent, 2003a. mon expression régulière : "^(w+)(?:[(w+)|(,?)|(.?)]+),s(19|20)d{2}[a-z]?."
Votre description de ce que vous essayez de faire n'est pas suffisante (que voulez-vous reconnaître/valider ? que voulez-vous capturer ?). Un exemple ne suffit pas.
Le but de mon expression est de retrouvée des références bibliographiques à la fin de différents textes. J'ai remarqué quelles sont en général de la forme : auteur+, dates ou auteur+, (date) ou date, auteur+ ou (date), auteurs+, il n'y pas vraiment de normes, c'est pas trop évident, par exemple, pour les majuscules ou les minuscules ca change une fois sur 2...
C'est à vous de nous donner des spécifications *précises* de ce que vous voulez faire, sinon nous ne pouvons rien pour vous. Il nous faut aussi un bout de code qui tourne, puisque vous semblez en avoir un, ainsi que ce que vous en attendez concrètement (sur des cas de test), comparé à ce qu'il vous donne.
Apres mon post, j ai réussi à trouver un premier type de référence grace à cette expression : ^([a-zA-Z]+)((?:(w+))|(?:(,))|(?:(.))*),s(19|20)d{2}[a-z]?. mais en fait je comprends pas bien ce qu'elle fait :P, j ai essayé de mettre un devant le premier point et ca ne fonctionne plus apres ??
Je n'ai aucune idée de ce que vous essayez de faire précisément, mais votre regexp est à peu près (aux étranges captures près) équivalente à: /^ # ancre au début de la chaîne (w+) # un mot, capturé dans $1 (w+|,|.*), # un mot, une virgule, ou n'importe quoi, le tout suivi d'une virgule s(19|20)d{2}[a-z]?./x # un espace, une date (dont les 2 premiers chiffres sont capturés), # éventuellement une minuscule, et un point littéral
Vous connaissez perldoc perlretut ?
Pourtant pour signifier que je cherche précisément un '.' (comme dans C. Dickens) je pensais que c'était la bonne manière ?
Oui, il faut . pour matcher un point littéral.
HTH, bon courage
-- Ronan
The program fails and the power plant explodes, poisoning the earth and the sea. Famine and disease sweep the world. All die. Oh, the embarrassment. Mark-Jason Dominus
Laurent a écrit:
Ronan Le Hy wrote:
Laurent a écrit:
Je tente de faire matcher une expression régulière avec un texte
suivi d'une date.
ex:
Bonjour, je m appelle S.Laurent, 2003a.
mon expression régulière :
"^(w+)(?:[(w+)|(,?)|(.?)]+),s(19|20)d{2}[a-z]?\."
Votre description de ce que vous essayez de faire n'est pas suffisante
(que voulez-vous reconnaître/valider ? que voulez-vous capturer ?). Un
exemple ne suffit pas.
Le but de mon expression est de retrouvée des références
bibliographiques à la fin de différents textes.
J'ai remarqué quelles sont en général de la forme : auteur+, dates ou
auteur+, (date) ou date, auteur+ ou (date), auteurs+, il n'y pas
vraiment de normes, c'est pas trop évident, par exemple, pour les
majuscules ou les minuscules ca change une fois sur 2...
C'est à vous de nous donner des spécifications *précises* de ce que vous
voulez faire, sinon nous ne pouvons rien pour vous. Il nous faut aussi
un bout de code qui tourne, puisque vous semblez en avoir un, ainsi que
ce que vous en attendez concrètement (sur des cas de test), comparé à ce
qu'il vous donne.
Apres mon post, j ai réussi à trouver un premier type de référence grace
à cette expression :
^([a-zA-Z]+)((?:(w+))|(?:(,))|(?:(.))*),s(19|20)d{2}[a-z]?.
mais en fait je comprends pas bien ce qu'elle fait :P, j ai essayé de
mettre un devant le premier point et ca ne fonctionne plus apres ??
Je n'ai aucune idée de ce que vous essayez de faire précisément, mais
votre regexp est à peu près (aux étranges captures près) équivalente à:
/^
# ancre au début de la chaîne
(w+)
# un mot, capturé dans $1
(w+|,|.*),
# un mot, une virgule, ou n'importe quoi, le tout suivi d'une virgule
s(19|20)d{2}[a-z]?./x
# un espace, une date (dont les 2 premiers chiffres sont capturés),
# éventuellement une minuscule, et un point littéral
Vous connaissez perldoc perlretut ?
Pourtant pour signifier que je cherche précisément un '.' (comme dans C.
Dickens) je pensais que c'était la bonne manière ?
Oui, il faut . pour matcher un point littéral.
HTH, bon courage
--
Ronan
The program fails and the power plant explodes, poisoning the earth and
the sea. Famine and disease sweep the world. All die. Oh, the embarrassment.
Mark-Jason Dominus
Je tente de faire matcher une expression régulière avec un texte suivi d'une date. ex: Bonjour, je m appelle S.Laurent, 2003a. mon expression régulière : "^(w+)(?:[(w+)|(,?)|(.?)]+),s(19|20)d{2}[a-z]?."
Votre description de ce que vous essayez de faire n'est pas suffisante (que voulez-vous reconnaître/valider ? que voulez-vous capturer ?). Un exemple ne suffit pas.
Le but de mon expression est de retrouvée des références bibliographiques à la fin de différents textes. J'ai remarqué quelles sont en général de la forme : auteur+, dates ou auteur+, (date) ou date, auteur+ ou (date), auteurs+, il n'y pas vraiment de normes, c'est pas trop évident, par exemple, pour les majuscules ou les minuscules ca change une fois sur 2...
C'est à vous de nous donner des spécifications *précises* de ce que vous voulez faire, sinon nous ne pouvons rien pour vous. Il nous faut aussi un bout de code qui tourne, puisque vous semblez en avoir un, ainsi que ce que vous en attendez concrètement (sur des cas de test), comparé à ce qu'il vous donne.
Apres mon post, j ai réussi à trouver un premier type de référence grace à cette expression : ^([a-zA-Z]+)((?:(w+))|(?:(,))|(?:(.))*),s(19|20)d{2}[a-z]?. mais en fait je comprends pas bien ce qu'elle fait :P, j ai essayé de mettre un devant le premier point et ca ne fonctionne plus apres ??
Je n'ai aucune idée de ce que vous essayez de faire précisément, mais votre regexp est à peu près (aux étranges captures près) équivalente à: /^ # ancre au début de la chaîne (w+) # un mot, capturé dans $1 (w+|,|.*), # un mot, une virgule, ou n'importe quoi, le tout suivi d'une virgule s(19|20)d{2}[a-z]?./x # un espace, une date (dont les 2 premiers chiffres sont capturés), # éventuellement une minuscule, et un point littéral
Vous connaissez perldoc perlretut ?
Pourtant pour signifier que je cherche précisément un '.' (comme dans C. Dickens) je pensais que c'était la bonne manière ?
Oui, il faut . pour matcher un point littéral.
HTH, bon courage
-- Ronan
The program fails and the power plant explodes, poisoning the earth and the sea. Famine and disease sweep the world. All die. Oh, the embarrassment. Mark-Jason Dominus