Man page - regex(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr es it ja ro zh_TW zh_CN deManual
regex
NOMDESCRIPTION
BOGUES
AUTEUR
VOIR AUSSI
TRADUCTION
NOM
regex â Expressions rationnelles POSIX.2
DESCRIPTION
Les expressions rationnelles (« ER »), dĂ©finies par POSIX.2 existent sous deux formes : les ER modernes (en gros, celles de egrep (1) que POSIX.2 appelle expressions rationnelles « étendues ») et les ER obsolĂštes (en gros, celles de ed (1) â les ER « basiques » pour POSIX.2) (N.d.T. : le terme « officiel » pour la traduction de « regular expression » est « expression rationnelle » et câest celui employĂ© ici, mais consultez https://fr.wikipedia.org/wiki/Expression_rĂ©guliĂšres). Les ER obsolĂštes existent surtout Ă titre de compatibilitĂ© avec dâanciens programmes et elles seront abordĂ©es Ă la fin. POSIX.2 laisse de cĂŽtĂ© certains aspects syntaxiques et sĂ©mantiques des ER ; un signe « (!) » indique une interprĂ©tation qui peut ne pas ĂȘtre totalement portable sur dâautres implĂ©mentations de POSIX.2.
Une ER (moderne) est une(!) ou plusieurs branches non vides(!), sĂ©parĂ©es par « | ». Elle correspond Ă tout ce qui correspond Ă lâune des branches.
Une branche est une(!) ou plusieurs piÚces concaténées. Elle correspond à ce qui correspond à la premiÚre piÚce, suivi de ce qui correspond à la seconde, et ainsi de suite.
Une piĂšce est un atome suivi Ă©ventuellement dâun unique(!) « * », « + », « ? » ou dâun encadrement . Un atome suivi de « * » correspond Ă une sĂ©quence de zĂ©ro ou plusieurs correspondances pour lâatome. Un atome suivi dâun « + » correspond Ă une sĂ©quence dâune ou plusieurs correspondances pour lâatome. Un atome suivi dâun « ? » correspond Ă une sĂ©quence de zĂ©ro ou une correspondance pour lâatome.
Un encadrement est un « { » suivi dâun entier dĂ©cimal non signĂ©, suivi Ă©ventuellement dâune virgule, suivie Ă©ventuellement dâun autre entier dĂ©cimal non signĂ©, toujours suivis dâun « } ». Les entiers doivent ĂȘtre entre 0 et RE_DUP_MAX (255(!)) compris et, sâil y en a deux, le second ne doit pas ĂȘtre plus petit que le premier. Un atome suivi dâun encadrement contenant un entier i et pas de virgule correspond Ă une sĂ©quence de i correspondances pour lâatome exactement. Un atome suivi dâun encadrement contenant un entier i et une virgule correspond Ă une sĂ©quence dâau moins i correspondances pour lâatome. Un atome suivi dâun encadrement contenant deux entiers i et j correspond Ă une sĂ©quence de i Ă j (compris) correspondances pour lâatome.
Un atome est une ER encadrĂ©e par des parenthĂšses (correspondant Ă ce qui correspond Ă lâER), un ensemble vide « () » (correspondant Ă la chaĂźne vide)(!), une expression entre crochets (voir plus bas), un point « . » (correspondant Ă nâimporte quel caractĂšre), un accent « Ë » (correspondant Ă une chaĂźne vide en dĂ©but de ligne), « $ » (correspondant Ă une chaĂźne vide en fin de ligne), un « \ » suivi dâun des caractĂšres « Ë.[$()|*+?{\ » (correspondant Ă ce caractĂšre considĂ©rĂ© comme un caractĂšre ordinaire), un « \ » suivi de nâimporte quel autre caractĂšre(!) (correspondant au caractĂšre pris sous forme littĂ©rale, comme si le « \ » Ă©tait absent(!)), ou un caractĂšre simple sans signification particuliĂšre (correspondant Ă ce caractĂšre). Un « { » suivi dâun caractĂšre autre quâun chiffre est considĂ©rĂ© sous sa forme littĂ©rale et non pas comme le dĂ©but dâun encadrement(!). Il est interdit de terminer une ER avec un « \ ».
Une expression entre crochets est une liste de caractĂšres encadrĂ©s par « [] ». Elle correspond normalement Ă nâimporte quel caractĂšre de la liste (mais voir ci-aprĂšs). Si la liste dĂ©bute par « Ë », elle correspond Ă nâimporte quel caractĂšre sauf ceux de la liste (mais voir ci-aprĂšs). Si deux caractĂšres de la liste sont sĂ©parĂ©s par un « - », ils reprĂ©sentent tout lâintervalle de caractĂšres entre eux (compris). Par exemple « [0-9] » en ASCII reprĂ©sente nâimporte quel chiffre dĂ©cimal. Il est illĂ©gal(!) dâutiliser la mĂȘme limite dans deux intervalles, comme « a-c-e ». Les intervalles dĂ©pendent beaucoup de lâordre de classement des caractĂšres et les programmes portables doivent Ă©viter de les utiliser.
Pour insĂ©rer un « ] » littĂ©ral dans la liste, il faut le mettre en premiĂšre position (ou aprĂšs un Ă©ventuel « Ë »). Pour inclure un « - » littĂ©ral, il faut le placer en premiĂšre ou en derniĂšre position, ou comme seconde borne dâun intervalle. Pour utiliser un « - » comme premiĂšre borne dâintervalle, encadrez-le entre « [. » et « .] » pour en faire un Ă©lĂ©ment de classement (voir plus bas). Ă lâexception de ces Ă©lĂ©ments et de quelques combinaisons avec des crochets (voir plus bas), tous les autres caractĂšres spĂ©ciaux, y compris le « \ », perdent leurs significations spĂ©ciales dans une expression entre crochets.
Dans une expression entre crochets, un Ă©lĂ©ment de classement (un seul caractĂšre ou une sĂ©quence de caractĂšres qui se comporte comme un seul, ou un nom de sĂ©quence de classement pour lâun ou lâautre) entre « [. » et « .] » correspond Ă la sĂ©quence des caractĂšres de cet Ă©lĂ©ment de classement. Une sĂ©quence est un seul Ă©lĂ©ment de la liste dâexpressions entre crochets. Une expression entre crochets contenant un Ă©lĂ©ment de classement multicaractĂšre peut donc correspondre Ă plus dâun caractĂšre. Par exemple, si la sĂ©quence inclut un Ă©lĂ©ment de classement « ch », alors lâER « [[.ch.]]*c » correspond aux cinq premiers caractĂšres de « chchcc ».
Dans une expression entre crochets, un Ă©lĂ©ment de classement encadrĂ© par « [= » et « =] » est une classe dâĂ©quivalence, correspondant aux sĂ©quences de caractĂšres de tous les Ă©lĂ©ments de classement Ă©quivalents Ă celui-ci, y compris lui-mĂȘme (sâil nây a pas dâautres Ă©lĂ©ments Ă©quivalents, le fonctionnement est le mĂȘme que si lâencadrement Ă©tait « [. » et « .] »). Par exemple, si o et ĂŽ sont membres dâune classe Ă©quivalence, alors « [[=o=]] », « [[=ĂŽ=]] », et « [oĂŽ] » sont tous synonymes. Une classe dâĂ©quivalence ne doit(!) pas ĂȘtre une borne dâintervalle.
Dans une expression entre crochets, le nom dâune classe de caractĂšres encadrĂ© par « [: » et « :] » correspond Ă la liste de tous les caractĂšres de la classe. Les noms des classes standard sont :
Ces classes correspondent aux classes de caractĂšres dĂ©finies pour wctype (3). Une localisation peut en fournir dâautres. Une classe de caractĂšres ne doit pas ĂȘtre utilisĂ©e comme borne dâintervalle.
Dans le cas oĂč une ER peut correspondre Ă plusieurs sous-chaĂźnes dâune chaĂźne donnĂ©e, elle correspond Ă celle qui commence le plus tĂŽt dans la chaĂźne. Si lâER peut correspondre Ă plusieurs sous-chaĂźnes dĂ©butant au mĂȘme point, elle correspond Ă la plus longue sous-chaĂźne. Les sous-expressions correspondent aussi Ă la plus longue sous-chaĂźne possible, Ă condition que la correspondance complĂšte soit la plus longue possible, avec les sous-expressions dĂ©butant le plus tĂŽt dans lâER ayant prioritĂ© sur celles dĂ©butant plus loin. Notez que les sous-expressions de haut niveau ont donc prioritĂ© sur les sous-expressions de bas niveau les composant.
La longueur des correspondances est mesurĂ©e en caractĂšres, pas en Ă©lĂ©ments de classement. Une chaĂźne vide est considĂ©rĂ©e comme plus longue quâaucune correspondance. Par exemple « bb* » correspond aux trois caractĂšres du milieu de « abbbc », « (wee|week)(knights|nights) » correspond aux dix caractĂšres de « weeknights », quand « (.*).* » est mis en correspondance avec « abc », la sous-expression entre parenthĂšses correspond aux trois caractĂšres, et si « (a*)* » est mis en correspondance avec « bc », lâER entiĂšre et la sous-ER entre parenthĂšses correspondent toutes deux avec la chaĂźne vide.
Si une correspondance sans distinction de casse est demandĂ©e, toutes les diffĂ©rences entre capitales et minuscules disparaissent de lâalphabet. Quand un symbole alphabĂ©tique existant dans les deux casses apparait hors dâune expression entre crochets, il est remplacĂ© par une expression contenant les deux casses (par exemple « x » devient « [xX] »). Lorsquâil apparaĂźt dans une expression entre crochets, tous ses Ă©quivalents sont ajoutĂ©s (« [x] » devient « [xX] » et « [^x] » devient « [^xX] »).
Aucune limite particuliĂšre nâest imposĂ©e sur la longueur des ER(!). Les programmes destinĂ©s Ă ĂȘtre portables devraient limiter leurs ER Ă 256 octets, car une implĂ©mentation peut refuser les expressions plus longues pour demeurer compatible avec POSIX.
Les expressions rationnelles obsolĂštes (« basiques ») diffĂšrent sur plusieurs points. « | », « + » et « ? » sont des caractĂšres normaux et nâont pas dâĂ©quivalents pour leurs fonctionnalitĂ©s. Les dĂ©limiteurs dâencadrement sont « \{ » et « \} », car « { » et « } » sont des caractĂšres ordinaires. Les parenthĂšses pour les sous-expressions sont « \( » et « \) », « ( » et « ) » Ă©tant par eux-mĂȘmes des caractĂšres ordinaires. « Ë » est un caractĂšre ordinaire sauf au dĂ©but dâune ER ou(!) au dĂ©but dâune sous-expression entre parenthĂšses, « $ » est un caractĂšre ordinaire sauf Ă la fin dâune ER ou(!) Ă la fin dâune sous-expression entre parenthĂšses, et « * » est un caractĂšre ordinaire sâil apparaĂźt au dĂ©but dâune ER ou au dĂ©but dâune sous-expression entre parenthĂšses (aprĂšs un Ă©ventuel « Ë » au dĂ©but).
Enfin, il existe un nouveau type dâatome, la rĂ©fĂ©rence arriĂšre : « \ » suivi dâun chiffre dĂ©cimal non nul n qui correspond Ă la mĂȘme sĂ©quence de caractĂšres que ceux mis en correspondance avec la n -iĂšme sous-expression entre parenthĂšses (les sous-expressions sont numĂ©rotĂ©es par leurs parenthĂšses ouvrantes, de gauche Ă droite), ainsi « [rs]([bc]\)\1 » correspond à « bb » ou « cc » mais pas à « bc » .
BOGUES
Utiliser deux sortes dâER est une ineptie.
La norme POSIX.2 actuelle dit que « ) » est un caractĂšre ordinaire en lâabsence de la « ( » correspondante. Câest dĂ» Ă une erreur dâinterprĂ©tation et cela changera probablement. Ăvitez dâen tenir compte.
Les rĂ©fĂ©rences arriĂšres sont une terrible ineptie et posent de gros problĂšmes pour une implĂ©mentation efficace. Elles sont de plus assez mal dĂ©finies (est-ce que « a\(\(b\)*\2\)*d » correspond à « abbbd » ?). Ăvitez-les.
Les spécifications de POSIX.2 sur les correspondances sans distinction de casse sont assez vagues. La définition « une casse implique toutes les casses » donnée plus haut est le consensus actuel parmi les implémentations comme étant la bonne interprétation.
AUTEUR
Cette page est tirée du paquet regex de Henry Spencer.
VOIR AUSSI
grep (1), regex (3)
POSIX.2, section 2.8 (Regular Expression Notation).
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Frédéric Hantrais <fhantrais@gmail.com> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .