Overview
Comment: | [fr] ajustements: expressions régulières pour Python et JS |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | fr | rg |
Files: | files | file ages | folders |
SHA3-256: |
10b5745d472344532ec02d00656e76fc |
User & Date: | olr on 2018-09-16 19:27:54 |
Other Links: | branch diff | manifest | tags |
Context
2018-09-17
| ||
09:00 | [graphspell] tokenizer: add chars to \w replacement (JS still sucks) check-in: c185b3fc04 user: olr tags: graphspell, rg | |
2018-09-16
| ||
19:27 | [fr] ajustements: expressions régulières pour Python et JS check-in: 10b5745d47 user: olr tags: fr, rg | |
19:27 | [build] parameter names harmonisation check-in: 2e5ccfe8ea user: olr tags: build, rg | |
Changes
Modified gc_lang/fr/rules.grx from [ededcbbd1d] to [f9a016b950].
︙ | ︙ | |||
425 426 427 428 429 430 431 | versions? ([0-9]+(?:[.][0-9]+[a-z]?)*) @@$ <<- ~1>> * # sigles __<s>(p_sigle1)__ ([A-Z][.][A-Z][.](?:[A-Z][.])*) +[A-ZÉÀÂÊÎÈÔ] @@0 <<- ~1>> =\1.replace(".", "")+"." __[s>(p_sigle2)__ [a-zA-Z][.][a-zA-Z][.](?:[a-zA-Z][.])* | | | 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 | versions? ([0-9]+(?:[.][0-9]+[a-z]?)*) @@$ <<- ~1>> * # sigles __<s>(p_sigle1)__ ([A-Z][.][A-Z][.](?:[A-Z][.])*) +[A-ZÉÀÂÊÎÈÔ] @@0 <<- ~1>> =\1.replace(".", "")+"." __[s>(p_sigle2)__ [a-zA-Z][.][a-zA-Z][.](?:[a-zA-Z][.])* <<- not re.search("(?i)^(?:i\\.e\\.|s\\.[tv]\\.p\\.|e\\.g\\.|a\\.k\\.a\\.|c\\.q\\.f\\.d\\.|b\\.a\\.|n\\.b\\.)$", \0) >>> <<- \0.__len__() == 4 ->> =\0.replace(".", "").upper() + "|" + \0[0:2] + " " + \0[2:4] # Sigle. Il est recommandé d’ôter les points pour les sigles. (S’il s’agit d’un prénom et d’un nom, mettez un espace.)|https://fr.wikipedia.org/wiki/Sigle#Typographie <<- __else__ ->> =\0.replace(".", "").upper() # Sigle. Il est recommandé d’ôter les points pour les sigles.|https://fr.wikipedia.org/wiki/Sigle#Typographie <<- \0 != "b.a." ~>> =\0.replace(".", "_") __[s>(p_sigle3)__ J[.]-[A-Z][.] <<- ~>> =\0.replace(".", "").replace("-","") |
︙ | ︙ | |||
451 452 453 454 455 456 457 | # Patronyme réduit à une seule lettre __[s](p_prénom_lettre_point_patronyme)__ ([A-ZÉÈÂÎ][\w-]+)[ ][A-ZÉÈÂ]([.])[ ]([A-ZÉÈÂ][\w-]+) @@0,$,$ <<- morph(\1, ":M[12]") and (morph(\3, ":(?:M[12]|V)") or not spell(\3)) ~2>> * __[s>(p_prénom_lettre_point)__ ([A-ZÉÈÂÎ][\w-]+)[ ][A-ZÉÈÂ]([.]) @@0,$ | | | 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 | # Patronyme réduit à une seule lettre __[s](p_prénom_lettre_point_patronyme)__ ([A-ZÉÈÂÎ][\w-]+)[ ][A-ZÉÈÂ]([.])[ ]([A-ZÉÈÂ][\w-]+) @@0,$,$ <<- morph(\1, ":M[12]") and (morph(\3, ":(?:M[12]|V)") or not spell(\3)) ~2>> * __[s>(p_prénom_lettre_point)__ ([A-ZÉÈÂÎ][\w-]+)[ ][A-ZÉÈÂ]([.]) @@0,$ <<- morph(\1, ":M[12]") and after("^\\W+[a-zéèêîïâ]") ~2>> _ # Patronymes composés avec Le/La/Les __[s](p_patronyme_composé_avec_le_la_les)__ [A-ZÉÈÂÎ][\w-]+[-–—]L(?:es?|a) [A-ZÉÈÂÎ][\w-]+ <<- ~>> =\0.replace(" ", "_") # IP __[s](p_adresse_IP)__ |
︙ | ︙ | |||
662 663 664 665 666 667 668 | -2>> =\2.capitalize() # Après un point, une majuscule est généralement requise. TEST: Je suis là. {{viens}}. ->> Viens TEST: Ils sont devenus idiots. {{c}}’est peine perdue. __[s]/maj(majuscule_en_début_phrase)__ ^ *([a-zéèâàô][\w-]+) @@$ | | | 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 | -2>> =\2.capitalize() # Après un point, une majuscule est généralement requise. TEST: Je suis là. {{viens}}. ->> Viens TEST: Ils sont devenus idiots. {{c}}’est peine perdue. __[s]/maj(majuscule_en_début_phrase)__ ^ *([a-zéèâàô][\w-]+) @@$ <<- after("\\w\\w[.] +\\w+") -1>> =\1.capitalize() # Majuscule en début de phrase, sauf éventuellement lors d’une énumération. TEST: {{je}} suis disponible quand tu veux. Mais pas aujourd’hui. !! !! !!!! Virgules !! |
︙ | ︙ | |||
721 722 723 724 725 726 727 | TEST: ceci, cela{{, …}} ->> … TEST: Les chiens, les chats{{.,}} les poules. ->> ,|. # Fin de paragraphe #__<i>/typo__ ({w_2}) *$ @@0 | | | 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 | TEST: ceci, cela{{, …}} ->> … TEST: Les chiens, les chats{{.,}} les poules. ->> ,|. # Fin de paragraphe #__<i>/typo__ ({w_2}) *$ @@0 # <<- before("[a-zéàùèê][.] ") and not before("^(?:\\d|\w[.])") # -1>> \1.|\1…|\1 !|\1 ?|\1 :|\1 ;|\1, # Il manque une ponctuation finale. !! !! !!!! Espaces manquants !! !! |
︙ | ︙ | |||
957 958 959 960 961 962 963 | !! !!!! Guillemets typographiques !! !! !! __<s>/typo(typo_guillemets_typographiques_doubles_ouvrants)__ "(?=\w) | | | 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 | !! !!!! Guillemets typographiques !! !! !! __<s>/typo(typo_guillemets_typographiques_doubles_ouvrants)__ "(?=\w) <<- not before("[a-zA-Zéïîùàâäôö]$") ->> « |“ # Guillemets typographiques ouvrants. __<s>/typo(typo_guillemets_typographiques_doubles_fermants)__ [\w.?!…,](")(?!\w) @@* <<- -1>> " »|”" # Guillemets typographiques fermants. TEST: {{"}}Le grand homme.” ->> « |“ TEST: “Le grand homme.{{"}} ->> " »|”" |
︙ | ︙ | |||
1022 1023 1024 1025 1026 1027 1028 | !! !!!! Cohérence des guillemets !! !! !! __<s>/typo(typo_cohérence_guillemets_chevrons_ouvrants)__ («)[^»“]+?(”) @@0,$ | | | | | | | | | | 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 | !! !!!! Cohérence des guillemets !! !! !! __<s>/typo(typo_cohérence_guillemets_chevrons_ouvrants)__ («)[^»“]+?(”) @@0,$ <<- not before("\\w$") -1>> “ # Guillemet ouvrant différent du guillemet fermant (”). <<- not after("^\\w") -2>> " »" # Guillemet fermant différent du guillemet ouvrant («). __<s>/typo(typo_cohérence_guillemets_chevrons_fermants)__ (“)[^”«]+?(») @@0,$ <<- not before("\\w$") -1>> "« " # Guillemet ouvrant différent du guillemet fermant (»). <<- not after("^\\w") -2>> ” # Guillemet fermant différent du guillemet ouvrant (“). TEST: C’est {{«}}stupide{{”}}. TEST: Quel {{“}}emmerdeur{{»}}, ce gars-là. __<s>/typo(typo_cohérence_guillemets_doubles_ouvrants)__ (“)[^”’“«]+?(’)(?!\w) @@0,$ <<- not before("\\w$") -1>> "‘" # Guillemet ouvrant différent du guillemet fermant (’). <<- -2>> ” # Guillemet fermant différent du guillemet ouvrant (“). __<s>/typo(typo_cohérence_guillemets_doubles_fermants)__ (‘)[^’“«]+?(”) @@0,$ <<- not before("\\w$") -1>> "“" # Guillemet ouvrant différent du guillemet fermant (”). <<- not after("^\\w") -2>> ’ # Guillemet fermant différent du guillemet ouvrant (‘). TEST: Tu sais, {{‘}}ton ami{{”}} est venu. TEST: Oui, je vois, mais c’est quand même un {{“}}salopard{{’}}. __[i]/typo(typo_guillemets_doubles_ouvrants_non_fermés)__ (“)\w[^”"»]+$ @@0 <<- -1>> _ # Guillemets fermants introuvables dans la suite du paragraphe. __[i]/typo(typo_guillemets_doubles_fermants_non_ouverts)__ ^[^“„«"]+\w(”) @@$ <<- -1>> _ # Guillemets ouvrants introuvables dans ce paragraphe. TEST: C’était mon affaire{{”}}. TEST: C’est {{“}}compliqué. __[i]/typo(typo_guillemet_simple_ouvrant_non_fermé)__ (‘)\w\w[^’']+$ @@0 <<- before(" $") or isStart() -1>> _ # Guillemet fermant introuvable dans la suite du paragraphe. __[i]/typo(typo_guillemet_simple_fermant_non_ouvert)__ ^[^‘']+\w\w(’) @@$ <<- after("^ ") or isEnd() -1>> _ # Guillemet ouvrant introuvable dans ce paragraphe. TEST: ce {{‘}}test ne finira jamais. TEST: ces actions ne représentent rien{{’}} pour moi. |
︙ | ︙ | |||
1121 1122 1123 1124 1125 1126 1127 | !! __[s]/num(num_grand_nombre_soudé)__ \d\d\d\d+ <<- not before("NF[ -]?(C|E|P|Q|X|Z|EN(?:[ -]ISO|)) *$") >>> <<- \0.__len__() > 4 ->> =formatNumber(\0) # Formatage des grands nombres. <<- __else__ | | | | 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 | !! __[s]/num(num_grand_nombre_soudé)__ \d\d\d\d+ <<- not before("NF[ -]?(C|E|P|Q|X|Z|EN(?:[ -]ISO|)) *$") >>> <<- \0.__len__() > 4 ->> =formatNumber(\0) # Formatage des grands nombres. <<- __else__ and after("^(?:,[0-9]+[⁰¹²³⁴⁵⁶⁷⁸⁹]?|[⁰¹²³⁴⁵⁶⁷⁸⁹])") or after("^[ ]*(?:[kcmµn]?(?:[slgJKΩ]|m[²³]?|Wh?|Hz|dB)|[%‰€$£¥Åℓhj]|min|°C|℃)(?![\\w’'])") ->> =formatNumber(\0) # Formatage des grands nombres. __[s]/num(num_nombre_quatre_chiffres)__ (?<!,)(\d\d\d\d)[ ]([a-zA-Zµ][a-zA-Z0-9Ωℓ⁰¹²³⁴⁵⁶⁷⁸⁹/·]*) @@0,$ <<- morph(\2, ";S", ":[VCR]") or mbUnit(\2) -1>> =formatNumber(\1) # Formatage des grands nombres TEST: {{12345}} ->> 12 345 |
︙ | ︙ | |||
1166 1167 1168 1169 1170 1171 1172 | !! !! !!!! Dates !! !! !! __[i]/date(date_nombres)__ (?<!\d[ /.-])(\d\d?)[ /.-](\d\d?)[ /.-](\d\d\d+)(?![ /.-]\d) @@0,w,$ | | | 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 | !! !! !!!! Dates !! !! !! __[i]/date(date_nombres)__ (?<!\d[ /.-])(\d\d?)[ /.-](\d\d?)[ /.-](\d\d\d+)(?![ /.-]\d) @@0,w,$ <<- not checkDate(\1, \2, \3) and not before("(?i)\\bversions? +$") ->> _ # Cette date est invalide. <<- ~>> =\0.replace(".", "-").replace(" ", "-").replace("\/", "-") TEST: le {{29 02 2011}} TEST: le {{40-02-2011}} TEST: le {{32.03.2018}} TEST: le {{81/01/2012}} TEST: 12-12-2012 |
︙ | ︙ | |||
1243 1244 1245 1246 1247 1248 1249 | TEST: __ocr__ {{II}} pleut tout le temps. TEST: __ocr__ En l’an {{2OO1}}, tout commença. ## Casse __[s]/ocr(ocr_casse1)__ [A-ZÉÈÂÊÎÔ]{w_1} | | | 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 | TEST: __ocr__ {{II}} pleut tout le temps. TEST: __ocr__ En l’an {{2OO1}}, tout commença. ## Casse __[s]/ocr(ocr_casse1)__ [A-ZÉÈÂÊÎÔ]{w_1} <<- \0.istitle() and before("\\w") >>> <<- morph(\0, ":G", ":M") ->> =\0.lower() # Erreur de numérisation ? Casse improbable. <<- __else__ and morph(\0, ":[123][sp]", ":[MNA]|>Est/") ->> =\0.lower() # Erreur de numérisation ? Casse improbable. TEST: __ocr__ votre ami la regarde, {{Vous}} ne l’avez pas achetée TEST: __ocr__ pour accommoder son regard, {{La}} lourde forme demeure TEST: __ocr__ parler de Nicole, {{Le}} sommeil ne vient pas. TEST: __ocr__ a fait de toi, Charles, {{Tu}} étais beau quand |
︙ | ︙ | |||
1271 1272 1273 1274 1275 1276 1277 | TEST: __ocr__ Part-{{On}} demain ? TEST: __ocr__ À ce compte-{{Ci}}, on n’en viendra jamais à bout. TEST: __ocr__ Quelques-{{Uns}} sont incapables d’y parvenir. __[s>/ocr(ocr_casse3)__ [LDNMTSCÇ]’ | | | | 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 | TEST: __ocr__ Part-{{On}} demain ? TEST: __ocr__ À ce compte-{{Ci}}, on n’en viendra jamais à bout. TEST: __ocr__ Quelques-{{Uns}} sont incapables d’y parvenir. __[s>/ocr(ocr_casse3)__ [LDNMTSCÇ]’ <<- before("\\w") ->> =\0.lower() # Erreur de numérisation ? Casse douteuse. TEST: __ocr__ regarde dans l’obscurité de {{L’}}entrepôt ## Lettres isolées # Note: l’option “mapos” cherche les apostrophes manquantes après les lettres l, d, n, m, t, s, j, c, ç __[s]/ocr(ocr_lettres_isolées)!2__ \w(?!’) <<- not re.search("[0-9aàAÀyYdlnmtsjcçDLNMTSJCÇ_]", \0) and not before("\\d[ ]+$") and not (\0.isupper() and after0(r"^\.")) ->> _ # Lettre isolée : erreur de numérisation ? TEST: __ocr__ des verres luisent sur {{i}} le bureau blanc. TEST: __ocr__ la voix, {{e}} est celle de… TEST: __ocr__ ressemble {{h}} une fenêtre de serre. TEST: __ocr__ Ça a duré 3 h. TEST: __ocr__ c’est alors que je suis fort. |
︙ | ︙ | |||
2342 2343 2344 2345 2346 2347 2348 | # l’ / j’ / Y / I __ocr_lj1__ ~^Y’[aâeéèêëiîïoôuyh] <<- ->> ="l’"+\1[2:] + "|L’"+\1[2:] + "|j’"+\1[2:] + "|J’"+\1[2:] # Erreur de numérisation ? Y ~^[aâeéèêëiîïoôuyh] | | | | | 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 | # l’ / j’ / Y / I __ocr_lj1__ ~^Y’[aâeéèêëiîïoôuyh] <<- ->> ="l’"+\1[2:] + "|L’"+\1[2:] + "|j’"+\1[2:] + "|J’"+\1[2:] # Erreur de numérisation ? Y ~^[aâeéèêëiîïoôuyh] <<- before("\\w") and not morph(\2, ":Y") ->> l’\2|L’\2|j’\2|J’\2 # Erreur de numérisation ? ~^[Ii]’[aâeéèêëiîïoôuyh] <<- ->> ="l’"+\1[2:] + "|L’"+\1[2:] + "|j’"+\1[2:] + "|J’"+\1[2:] # Erreur de numérisation ? [I|i|1] ~^[aâeéèêëiîïoôuy] <<- ->> l’\2|L’\2|j’\2|J’\2 # Erreur de numérisation ? TEST: __ocr__ {{Y’arrive}} demain. TEST: __ocr__ {{I’arrive}} demain. # l’ / V / P __ocr_l__ ~^V. <<- \1.istitle() and before("\\w") and morph(\1, ":", ":M") >>> <<- spell(\1[1:]) ->> ="v"+\1[1:] + "|l’"+\1[1:] # Erreur de numérisation ? <<- __else__ ->> ="v"+\1[1:] # Erreur de numérisation ? ~^P[aâeéêèiîïoôuy] <<- before("\\w") and morph(\1, ":", ":M") and spell(\1) ->> ="l’"+\1[1:] + "|p"+\1[1:] # Erreur de numérisation ? TEST: __ocr__ beaucoup de {{Vélos}} à Versailles. TEST: __ocr__ avec {{Vagile}} méthode de notre amie Virginie, tout est possible. TEST: __ocr__ Viens demain. TEST: __ocr__ Ce jour où Valérie eut sa licence de droit. TEST: __ocr__ Il scrute Pierre, {{Pair}} maussade. TEST: __ocr__ Une grosse vague arrivait et {{Peau}} remplit. |
︙ | ︙ | |||
2625 2626 2627 2628 2629 2630 2631 | TEST: __ocr__ mais {{taudis}} qu’elle œuvrait à leur salut, les nuages s’amoncelaient. # l’est / Test __ocr_l_est__ Test | | | 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 | TEST: __ocr__ mais {{taudis}} qu’elle œuvrait à leur salut, les nuages s’amoncelaient. # l’est / Test __ocr_l_est__ Test <<- before("\\w") ->> l’est # Erreur de numérisation ? TEST: __ocr__ ça {{Test}} à leurs yeux. # tête / tète __ocr_tête__ tète |
︙ | ︙ | |||
2963 2964 2965 2966 2967 2968 2969 | TEST: le {{31 avril}} TEST: le {{30 février}} TEST: {{29 février 2011}} __date_journée_jour_mois_année__ ([lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche]) ?,¿ ?le¿ (~^\d\d?$) - (~^\d\d?$) - (~^\d{2,5}$) | | | | 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 | TEST: le {{31 avril}} TEST: le {{30 février}} TEST: {{29 février 2011}} __date_journée_jour_mois_année__ ([lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche]) ?,¿ ?le¿ (~^\d\d?$) - (~^\d\d?$) - (~^\d{2,5}$) <<- /date/ not after("^ +av(?:ant|) +J(?:C|ésus-Christ)") and not checkDay(\1, \2, \3, \4) -1>> =getDay(\2, \3, \4) # Le jour de la date suivante est incorrect. ([lundi|mardi|mercredi|jeudi|vendredi|samedi|dimanche]) ?,¿ ?le¿ (~^\d\d?$) ([janvier|février|mars|avril|mai|juin|juillet|aout|août|septembre|octobre|novembre|décembre]) (~^\d{2,5}$) <<- /date/ not after("^ +av(?:ant|) +J(?:C|ésus-Christ)") and not checkDayWithString(\1, \2, \3, \4) -1>> =getDayWithString(\2, \3, \4) # Le jour de la date suivante est incorrect. TEST: {{samedi}}, le 10-06-2014 ->> mardi TEST: {{mercredi}}, le 10 juin 2014 ->> mardi TEST: {{lundi}}, 18 août 1912 ->> dimanche TEST: {{jeudi}} 17 aout 1912 ->> samedi TEST: lundi, 18 août 1912 avant Jésus-Christ (date imaginaire) |
︙ | ︙ | |||
3868 3869 3870 3871 3872 3873 3874 | TEST: les méfaits de la {{vidéoprotection}} #__[i]/bs__ (tomb\w+) dans les pommes <<- ->> \1 dans les pâmes # « Tomber dans les pâmes » est l’ancienne tournure. __bs_malgré_que__ malgré que | | | | 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 | TEST: les méfaits de la {{vidéoprotection}} #__[i]/bs__ (tomb\w+) dans les pommes <<- ->> \1 dans les pâmes # « Tomber dans les pâmes » est l’ancienne tournure. __bs_malgré_que__ malgré que <<- /bs/ not after(" en (?:a|aie|aies|ait|eut|eût|aura|aurait|avait)\\b") ->> bien que|quoique # “Malgré que” est une tournure populaire. Utilisez “bien que” ou “quoique”. malgré qu’ <<- /bs/ not after(" en (?:a|aie|aies|ait|eut|eût|aura|aurait|avait)\\b") ->> bien qu’|quoiqu’ # “Malgré que” est une tournure populaire. Utilisez “bien que” ou “quoique”. TEST: {{Malgré que}} je sois fou. #([mts]e|[nv]ous) (rappel\w+) (de) <<- word(1) != "ne" and not morph(word(1), ":V") # -3>> _ # Expression impropre. « Se rappeler quelque chose » ou « Se souvenir de quelque chose ». |
︙ | ︙ | |||
4567 4568 4569 4570 4571 4572 4573 | [me|m’|te|t’|nous|vous] ?[le|la|l’|les|en|y]¿ (~ai$) [le|la|l’|les] [lui|leur|en|y] (~ai$) [lui|leur] en (~ai$) <<- /conj/ not value(>1, "|je|") and morph(\1, ":1s", ":(?:E|G|W|M|J|3[sp])") and not tag_before(\1, "1s") -1>> =suggVerb(\1, ":3s") # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du singulier. Sujet (“je” ou “moi qui”) introuvable. ~ai$ | | | | 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 | [me|m’|te|t’|nous|vous] ?[le|la|l’|les|en|y]¿ (~ai$) [le|la|l’|les] [lui|leur|en|y] (~ai$) [lui|leur] en (~ai$) <<- /conj/ not value(>1, "|je|") and morph(\1, ":1s", ":(?:E|G|W|M|J|3[sp])") and not tag_before(\1, "1s") -1>> =suggVerb(\1, ":3s") # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du singulier. Sujet (“je” ou “moi qui”) introuvable. ~ai$ <<- /conj/ not value(>1, "|je|") and morph(\1, ":1s", ":(?:E|G|W|M|J|3[sp]|N|A|Q)") and not (\1.istitle() and before0("\\w")) and not tag_before(\1, "1s") -1>> =suggVerb(\1, ":3s") # Incohérence. Ceci est un verbe à la 1ʳᵉ personne du singulier. Sujet (“je” ou “moi qui”) introuvable. __conj_xxxas_xxxes__sans_sujet!3__ [se|s’] ?[en|y|le|la|l’|les]¿ (~[ae]s$) <<- /conj/ morph(\1, ":2s", ":(?:G|W|M|J|3[sp])") -1>> =suggVerb(\1, ":3s") # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable. [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿ (~[ae]s$) <<- /conj/ not value(>1, "|tu|") and morph(\1, ":2s", ":(?:E|G|W|M|J|3[sp]|1p)") and not tag_before(\1, "2s") -1>> =suggVerb(\1, ":3s") # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable. [me|m’|te|t’|nous|vous] ?[le|la|l’|les|en|y]¿ (~[ae]s$) [le|la|l’|les] [lui|leur|en|y] (~[ae]s$) [lui|leur] en (~[ae]s$) <<- /conj/ not value(>1, "|tu|") and morph(\1, ":2s", ":(?:E|G|W|M|J|3[sp]|1p)") and not tag_before(\1, "2s") -1>> =suggVerb(\1, ":3s") # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable. ~[ae]s$ <<- /conj/ not value(>1, "|tu|") and morph(\1, ":2s", ":(?:E|G|W|M|J|3[sp]|N|A|Q|1p)") and not (\1.istitle() and before0("\\w")) and not tag_before(\1, "2s") -1>> =suggVerb(\1, ":3s") # Incohérence. Ceci est un verbe à la 2ᵉ personne du singulier. Sujet (“tu” ou “toi qui”) introuvable. __conj_xxxxxs_sans_sujet!3__ [se|s’] ?[en|y|le|la|l’|les]¿ (~[iudnrtpcï]s$) <<- /conj/ morph(\1, ":[12]s", ":(?:G|W|M|J|3[sp]|2p|1p)") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. |
︙ | ︙ | |||
4609 4610 4611 4612 4613 4614 4615 | [le|la|l’|les] [lui|leur|en|y] (~[iudnrtpcï]s$) [lui|leur] en (~[iudnrtpcï]s$) <<- /conj/ not value(>1, "|je|tu|") and morph(\1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") and not tag_before(\1, "1s") and not tag_before(\1, "2s") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. étais | | | | | | | | 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 | [le|la|l’|les] [lui|leur|en|y] (~[iudnrtpcï]s$) [lui|leur] en (~[iudnrtpcï]s$) <<- /conj/ not value(>1, "|je|tu|") and morph(\1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p)") and not tag_before(\1, "1s") and not tag_before(\1, "2s") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. étais <<- /conj/ not value(>1, "|je|tu|") and not (\1.istitle() and before0("\\w")) and not morph(<1, ":[DA].*:p") and not tag_before(\1, "1s") and not tag_before(\1, "2s") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. ~[iudnrtpcï]s$ <<- /conj/ not value(>1, "|je|tu|") and morph(\1, ":[12]s", ":(?:E|G|W|M|J|3[sp]|2p|1p|V0e|N|A|Q)") and not (\1.istitle() and before0("\\w")) and not tag_before(\1, "1s") and not tag_before(\1, "2s") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. __conj_peux_veux_vaux_équivaux_prévaux_sans_sujet!3__ [se|s’] ?[en|y|le|la|l’|les]¿ ([peux|veux|vaux|équivaux|prévaux]) <<- /conj/ -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. [ne|n’] ?[le|la|l’|les|en|me|m’|te|t’|nous|vous|lui|leur|y]¿ ([peux|veux|vaux|équivaux|prévaux]) <<- /conj/ not value(>1, "|je|tu|") and not tag_before(\1, "1s") and not tag_before(\1, "2s") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. [me|m’|te|t’|nous|vous] ?[le|la|l’|les|en|y]¿ ([peux|veux|vaux|équivaux|prévaux]) [le|la|l’|les] [lui|leur|en|y] ([peux|veux|vaux|équivaux|prévaux]) [lui|leur] en ([peux|veux|vaux|équivaux|prévaux]) <<- /conj/ not value(>1, "|je|tu|") and not tag_before(\1, "1s") and not tag_before(\1, "2s") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. vaux <<- /conj/ not value(>1, "|je|tu|") and not (\1.istitle() and before0("\\w")) and not tag_before(\1, "1s") and not tag_before(\1, "2s") and not morph(<1, ":(?:R|D.*:p)") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. [peux|veux|équivaux|prévaux] <<- /conj/ not value(>1, "|je|tu|") and not (\1.istitle() and before0("\\w")) and not tag_before(\1, "1s") and not tag_before(\1, "2s") -1>> =suggVerb(\1, ":3s") # Incohérence. Le sujet de cette forme verbale est introuvable. TEST: Caroline, quand l’heure viendra, {{décideras}} de la conduite à tenir. TEST: ceux-là, dans tous les cas de figure et dans tous les coups ratés, {{comprenais}} mal pourquoi on leur en voulait. TEST: Lui, quand il y pensait, en {{arrivai}} à chaque fois à la même conclusion. TEST: Elle, ici et dans tous les cas de figure, {{veux}} toujours en faire plus. TEST: Le total de cette opération, contrairement à ce qu’on pense, {{équivaux}} à au moins trois d’entre eux. TEST: {{j'}}ai signalé que {{j'}}essayais de regrouper les paragraphes. (Tests avec apostrophe droite.) TEST: je me questionne, {{exiges}} des réponses mais n’en obtiens pas… TEST: dans tous les cas de figure imaginés par cette bande de nuls, il n’y en a pas un qui les sauvera. TEST: ces gens qui vont par monts et par vaux. TEST: pour ne justement pas donner l’impression de s’être trompé. ## Incohérences avec formes verbales 1pl et 2pl sans sujet __conj_xxxons_sans_sujet!3__ @:1p¬:[EGMNAJ] <<- /conj/ not value(>1, "|nous|") and not (\1.istitle() and before0("\\w")) and not tag_before(\1, "1p") -1>> =suggVerb(\1, ":3p") # Ceci est un verbe à la 1ʳᵉ personne du pluriel. Sujet (“nous” ou équivalent) introuvable. __conj_xxxez_sans_sujet!3__ @:2p¬:[EGMNAJ] <<- /conj/ not value(>1, "|vous|") and not (\1.istitle() and before0("\\w")) and not tag_before(\2, "2p") -1>> =suggVerb(\1, ":3p") # Ceci est un verbe à la 2ᵉ personne du pluriel. Sujet (“vous” ou équivalent) introuvable. TEST: les hommes et les femmes, qui sans un bruit, sans une parole amère, {{continuerons}} leur tâche n’en seront pas plus récompensés. TEST: il était dit que cette femme et son frère {{promènerez}} leur chien à cette heure de la journée. TEST: cet homme et cette femme {{pouvez}} y parvenir avec de la persévérance TEST: Comme on lui disait que vous-même aviez déjà consulté le notaire TEST: ce sont des terroristes et ça ne nous arrivera pas à nous, qui n’avons rien à nous reprocher |
︙ | ︙ | |||
4742 4743 4744 4745 4746 4747 4748 | -2>> =suggSimil(\2, ":[NA]:.:[si]", True) # Incohérence avec « \1 » : « \2 » est un verbe. [<start>|,] [ton|son|audit] @:(?:Y|[123][sp])¬:[NAQ] <<- /conf/ \3.islower() -3>> =suggSimil(\3, ":[NA]:[me]:[si]", True) # Incohérence avec « \2 » : « \3 » est un verbe. un @:(?:Y|[123][sp])¬:[GNA] | | | 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 | -2>> =suggSimil(\2, ":[NA]:.:[si]", True) # Incohérence avec « \1 » : « \2 » est un verbe. [<start>|,] [ton|son|audit] @:(?:Y|[123][sp])¬:[NAQ] <<- /conf/ \3.islower() -3>> =suggSimil(\3, ":[NA]:[me]:[si]", True) # Incohérence avec « \2 » : « \3 » est un verbe. un @:(?:Y|[123][sp])¬:[GNA] <<- /conf/ not value(<1, "|dont|l’|d’|sauf|") and not before("(?i)\\bun à +$") -2>> =suggSimil(\2, ":[NAQ]:[me]:[si]", True) # Incohérence avec “\1” : “\2” est une forme verbale conjuguée. TEST: un {{maintient}} difficile. TEST: quelqu’un arrive. TEST: cet {{plaît}} est infectée. TEST: {{ce}} {{rappelle}} n’en finit pas. TEST: mon {{rackette}} n’a pas porté les fruits espérés. |
︙ | ︙ | |||
5111 5112 5113 5114 5115 5116 5117 | __conf_à_a_infinitif__ a @:Y¬:G a [ne|n’|me|m’|te|t’|se|s’|en|y|lui|nous|vous] @:Y a [n’|m’|t’|s’|l’|les|lui|nous|vous|leur] [en|y] @:Y a [le|la|l’|les|leur] @:Y¬:N | | | 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 | __conf_à_a_infinitif__ a @:Y¬:G a [ne|n’|me|m’|te|t’|se|s’|en|y|lui|nous|vous] @:Y a [n’|m’|t’|s’|l’|les|lui|nous|vous|leur] [en|y] @:Y a [le|la|l’|les|leur] @:Y¬:N <<- /conf/ not value(<1, "|il|elle|on|n’|m’|t’|") and not before("(?i)\\bqu[e’] |n’(?:en|y) +$") -1>> à # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0 TEST: scrupuleux {{a}} n’en toucher qu’une part infime. TEST: Ne pas hésiter {{a}} {{demander}} des conseils. TEST: Sébastien {{a}} {{demander}} des conseils. |
︙ | ︙ | |||
5415 5416 5417 5418 5419 5420 5421 | a vive allure a voix [haute|basse] a vol d’ oiseau a vrai dire a vue d’ œil a y [réfléchir|songer|penser] a y regarder de plus près | | | | 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 | a vive allure a voix [haute|basse] a vol d’ oiseau a vrai dire a vue d’ œil a y [réfléchir|songer|penser] a y regarder de plus près <<- /conf/ not value(<1, "|l’|n’|il|elle|on|y|") and not before("(?i)n’en +$") -1>> à # Confusion probable : “a” est une forme conjugée de “avoir”. Pour la préposition, écrivez “à”.|http://fr.wiktionary.org/wiki/%C3%A0 a [mon|ton|son|notre|votre|leur] [cœur|corps] défendant a [mon|ton|son|notre|votre|leur] grand désarroi a [mon|ton|son|notre|votre|leur] [avis|côté|détriment|encontre|égard|insu|sujet|tour] a [ma|ta|sa|notre|votre|leur] grande [surprise|tristesse] a [ma|ta|sa|notre|votre|leur] [connaissance|disposition|guise|portée] a [mes|tes|ses|nos|vos|leurs] [dépens|côtés] a [mes|tes|ses|nos|vos|leurs] risques et périls <<- /conf/ not value(<1, "|que|qu’|l’|n’|il|elle|on|y|") and not before("(?i)n’en +$") -1>> à # Confusion probable : “a” est la conjugaison du verbe “avoir”. Utilisez la préposition “à”.|http://fr.wiktionary.org/wiki/%C3%A0 TEST: Puisqu’on nous méprise, autant y aller {{a}} reculons. TEST: Les parties {{a}} nouveau divisées ne se réuniront pas avant longtemps. TEST: ils viennent nous attaquer {{a}} tout bout de champ TEST: On s’y fait, d’une manière ou d’une autre, {{a}} notre corps défendant. TEST: on fait ça {{a}} la va-vite. |
︙ | ︙ | |||
5675 5676 5677 5678 5679 5680 5681 | sa @:G¬>(?:tr(?:ès|op)|peu|bien|plus|moins|toute|presque)/|:[NAQ].*:f <<- /conf/ -1>> ça # Confusion : “sa” (sa maison, sa passion) ≠ “ça” (ça vient, ça heurte). sa [n’|m’|t’|s’|j’|l’|d’|qu’|lorsqu’|puisqu’|quoiqu’] <<- /conf/ -1>> ça # Confusion : “sa” (sa maison, sa passion) ≠ “ça” (ça vient, ça heurte). çà | | | 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 | sa @:G¬>(?:tr(?:ès|op)|peu|bien|plus|moins|toute|presque)/|:[NAQ].*:f <<- /conf/ -1>> ça # Confusion : “sa” (sa maison, sa passion) ≠ “ça” (ça vient, ça heurte). sa [n’|m’|t’|s’|j’|l’|d’|qu’|lorsqu’|puisqu’|quoiqu’] <<- /conf/ -1>> ça # Confusion : “sa” (sa maison, sa passion) ≠ “ça” (ça vient, ça heurte). çà <<- /conf/ not value(<1, "|oh|ah|") and not after("^ +et là") ->> ça # Confusion : « çà » ne s’emploie plus guère que dans l’expression « çà et là ». ça et là <<- /conf/ not morph(<1, ":R") ->> çà et là # Confusion : « ça » équivaut à « cela ». Dans l’expression « çà et là », « çà » équivaut à « ici ». sa <end> <<- /conf/ -1>> ça # Confusion probable : “sa” est un déterminant féminin singulier. Pour l’équivalent de “cela” ou “ceci”, écrivez : |
︙ | ︙ | |||
6620 6621 6622 6623 6624 6625 6626 | [peux|peut] [importent|importe] <<- /conf/ morph(<1, ":C|<start>") -1>> peu # Confusion : « \1 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”. [très|trop|de|quelque|pour|à] [peux|peut] <<- /conf/ -2>> peu # Confusion : « \2 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”. un [peux|peut] | | | 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 | [peux|peut] [importent|importe] <<- /conf/ morph(<1, ":C|<start>") -1>> peu # Confusion : « \1 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”. [très|trop|de|quelque|pour|à] [peux|peut] <<- /conf/ -2>> peu # Confusion : « \2 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”. un [peux|peut] <<- /conf/ not value(<1, "|quelqu’|l’|d’|sauf|") -2>> peu # Confusion : « \2 » est une conjugaison de “pouvoir”, utilisez “peu” pour dire “pas beaucoup”. [il|on] ?[ne|n’]¿ peu <<- /conf/ --1>> peut # Confusion : « peu » signifie « pas beaucoup ». [je|tu] ?[ne|n’]¿ peu <<- /conf/ --1>> peux # Confusion : « peu » signifie « pas beaucoup ». |
︙ | ︙ | |||
6705 6706 6707 6708 6709 6710 6711 | depuis [>prêt|>pré] <<- /conf/ --1>> près # Confusion probable. Être prêt(e) à faire quelque chose. Être près de quelque chose. Le pré est un champ d’herbes. très [>prêt|>pré] <<- /conf/ -2>> près # Confusion probable. Être prêt(e) à faire quelque chose. Être près de quelque chose. Le pré est un champ d’herbes. près à @:Y|>(?:tout|les?|la)/ | > | | | 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 | depuis [>prêt|>pré] <<- /conf/ --1>> près # Confusion probable. Être prêt(e) à faire quelque chose. Être près de quelque chose. Le pré est un champ d’herbes. très [>prêt|>pré] <<- /conf/ -2>> près # Confusion probable. Être prêt(e) à faire quelque chose. Être près de quelque chose. Le pré est un champ d’herbes. près à @:Y|>(?:tout|les?|la)/ <<- /conf/ not value(<1, "|peu|de|") and not before("(?i)\\bau plus $") -1>> prêt|prêts # Confusion probable. Être près de (faire) quelque chose. Prêt à faire quelque chose. >prêt [de|d’] [toi|vous|lui|elle|eux|elles|@:M] <<- /conf/ not before("(?i)\\b(obten|obt[iî])") -1>> près # Confusion probable. Être près de (faire) quelque chose. Prêt à faire quelque chose. >prêt [de|d’] la [lui|leur|@:Y] <<- /conf/ \3.islower() -1>> près # Confusion probable. Être près de (faire) quelque chose. Prêt à faire quelque chose. >prêt [de|d’] [le|l’|les|me|m’|te|t’|se|s’|ne|n’|en|y|@:Y] <<- /conf/ \3.islower() -1>> près # Confusion probable. Être près de (faire) quelque chose. Prêt à faire quelque chose. |
︙ | ︙ | |||
7049 7050 7051 7052 7053 7054 7055 | [qui|que|comment|pourquoi|lorsque|quand] son [,|@:[DR]] <<- /conf/ -2>> sont # Confusion probable : “son” est un déterminant ou un nom masculin. Le verbe “être” à la 3ᵉ personne du pluriel s’écrit “sont”. [<start>|,] sont @:[NA].*:[me]:s|>[aeéiîou].*/:[NA].*:f:s¬:[GW] <<- /conf/ -2>> son # Confusion probable : “sont” est le verbe “être” à la 3ᵉ personne du pluriel. Pour le déterminant, écrivez “son”. sont @:[NA].*:[me]:s|>[aeéiîou].*/:[NA].*:f:s¬:[GW] | | | | 7050 7051 7052 7053 7054 7055 7056 7057 7058 7059 7060 7061 7062 7063 7064 7065 7066 7067 7068 7069 7070 7071 7072 | [qui|que|comment|pourquoi|lorsque|quand] son [,|@:[DR]] <<- /conf/ -2>> sont # Confusion probable : “son” est un déterminant ou un nom masculin. Le verbe “être” à la 3ᵉ personne du pluriel s’écrit “sont”. [<start>|,] sont @:[NA].*:[me]:s|>[aeéiîou].*/:[NA].*:f:s¬:[GW] <<- /conf/ -2>> son # Confusion probable : “sont” est le verbe “être” à la 3ᵉ personne du pluriel. Pour le déterminant, écrivez “son”. sont @:[NA].*:[me]:s|>[aeéiîou].*/:[NA].*:f:s¬:[GW] <<- /conf/ morph(<1, ":V", ":[NA].*:[pi]|>(?:ils|elles|vous|nous|leur|lui|[nmts]e)/") and not before("(?i)\\bce qu[e’] |[mts]’en +$") -1>> son # Confusion probable : “sont” est le verbe “être” à la 3ᵉ personne du pluriel. Pour le déterminant, écrivez “son”. [à|chez|dès|par] sont [avec|contre|devant|derrière|pour|sans|sur] sont @:[NA].*:[me]:s|>[aeéiîou].*/:[NA].*:f:s¬:[GW] <<- /conf/ -2>> son # Confusion probable : “sont” est le verbe “être” à la 3ᵉ personne du pluriel. Pour le déterminant, écrivez “son”. en sont @:[NA].*:[me]:s|>[aeéiîou].*/:[NA].*:f:s¬:[GW] <<- /conf/ not value(<1, "|ils|elles|leur|lui|nous|vous|m’|t’|s’|l’|") and not before("(?i)\\bce qu[e’] $") -2>> son # Confusion probable : “sont” est le verbe “être” à la 3ᵉ personne du pluriel. Pour le déterminant, écrivez “son”. TEST: ne leur {{son}} pas odieux. TEST: Ces chiens me {{son}} odieux. TEST: {{sont}} {{pain}} TEST: en {{sont}} {{absence}} TEST: qui {{son}} ces gens ? |
︙ | ︙ | |||
7261 7262 7263 7264 7265 7266 7267 | # voir / voire __conf_voir_voire__ voir [grand|petit|rouge] <<- %2>> voir @:A¬:[NGM] <<- /conf/ not \2.istitle() and not morph(<1, ":O[os]|>(?:[ndmts]e|falloir|pouvoir|savoir|de)/") | | | 7262 7263 7264 7265 7266 7267 7268 7269 7270 7271 7272 7273 7274 7275 7276 | # voir / voire __conf_voir_voire__ voir [grand|petit|rouge] <<- %2>> voir @:A¬:[NGM] <<- /conf/ not \2.istitle() and not morph(<1, ":O[os]|>(?:[ndmts]e|falloir|pouvoir|savoir|de)/") and not before("(?i)\\b[ndmts](?:e |’(?:en |y ))(?:pas |jamais |) *$") -1>> voir # Confusion probable : “voir” est un verbe concernant la perception visuelle. Pour signifier “et même possiblement”, écrivez :|https://fr.wiktionary.org/wiki/voire [comme|lorque|puisque|quand|que|quoique|si] (voire) [ni|et|par|pour|sans] (voire) [>aller|>falloir|>pouvoir|>vouloir] ?[guère|jamais|pas|plus|point|rien]¿ (voire) <<- /conf/ -1>> voir # Confusion probable : “voire” signifie “et même possiblement”. Pour le verbe, écrivez “voir”.|https://fr.wiktionary.org/wiki/voire |
︙ | ︙ | |||
9360 9361 9362 9363 9364 9365 9366 | entre [moi|toi|lui|elle|nous|vous|eux|elles] et [moi|toi|lui|elle|nous|vous|eux|elles] <<- ~>> * haut et fort <<- not morph(<1, ":D") ~>> * hélas | | | 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 9375 | entre [moi|toi|lui|elle|nous|vous|eux|elles] et [moi|toi|lui|elle|nous|vous|eux|elles] <<- ~>> * haut et fort <<- not morph(<1, ":D") ~>> * hélas <<- not morph(<1, ":(?:X|Oo)") and not tag_before(\1, "2s") ~>> * nécessité fait loi <<- not morph(<1, ":D.*:f:[si]") ~>> * nombre [de|des] <<- morph(<1, ":(?:R|C[sc])") ~1>> * |
︙ | ︙ | |||
9675 9676 9677 9678 9679 9680 9681 | [la|cette] [baronne|docteur|docteure|députée|duchesse|ministre|sœur|princesse|présidente|professeure|reine|sénatrice] @:M[12] <<- ~3>> * [Mr|Mlle|Mme|Mgr|miss] ~^[A-ZÉÈÊ] <<- ~2>> * @:Cs ~^[A-ZÉÈÊ] et [moi|toi|lui|elle|nous|vous|eux|elles] | | | 9676 9677 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 | [la|cette] [baronne|docteur|docteure|députée|duchesse|ministre|sœur|princesse|présidente|professeure|reine|sénatrice] @:M[12] <<- ~3>> * [Mr|Mlle|Mme|Mgr|miss] ~^[A-ZÉÈÊ] <<- ~2>> * @:Cs ~^[A-ZÉÈÊ] et [moi|toi|lui|elle|nous|vous|eux|elles] <<- morph(\2, ":M") and not before("\\b(?:plus|moins|aussi) .* que +$") ~2:4>> =rewriteSubject(\2,\4) + "||" <start> ~^[A-ZÉÈÊ] et [moi|toi|lui|elle|nous|vous|eux|elles] <<- morph(\2, ":M") ~2:0>> =rewriteSubject(\2,\4) + "||" |
︙ | ︙ | |||
10010 10011 10012 10013 10014 10015 10016 | __purge_tous_deux_trois__ >faire tous [deux|trois] <<- ~2:0>> * >faire tous | | | 10011 10012 10013 10014 10015 10016 10017 10018 10019 10020 10021 10022 10023 10024 10025 | __purge_tous_deux_trois__ >faire tous [deux|trois] <<- ~2:0>> * >faire tous <<- morph(\1, ":[123]p") or (\1 == "fait" and value(<1, "|on|")) ~2>> * @@@@ @@@@ @@@@ @@@@ |
︙ | ︙ | |||
10948 10949 10950 10951 10952 10953 10954 | TEST: les heureux imbéciles {{payé}} au lance-pierre. __gn_det_plur_3m__ [ces|mes|tes|ses|nos|vos|leurs|quels|quelles|aux] *WORD *WORD *WORD [plusieurs|quelques|certains|certaines|moult] *WORD *WORD *WORD [lesdits|lesdites|desdits|desdites|auxdits|auxdites] *WORD *WORD *WORD | | | 10949 10950 10951 10952 10953 10954 10955 10956 10957 10958 10959 10960 10961 10962 10963 | TEST: les heureux imbéciles {{payé}} au lance-pierre. __gn_det_plur_3m__ [ces|mes|tes|ses|nos|vos|leurs|quels|quelles|aux] *WORD *WORD *WORD [plusieurs|quelques|certains|certaines|moult] *WORD *WORD *WORD [lesdits|lesdites|desdits|desdites|auxdits|auxdites] *WORD *WORD *WORD <<- /gn/ morph(\2, ":[NA].*:[pi]") and morph(\3, ":[NA].*:[pi]", ":(?:[123][sp]|G)") and morph(\4, ":[NA].*:s", "*") and not before("(?i)\\bune? de +$") -4>> =suggPlur(\4) # Accord de nombre erroné avec « \1 \2 \3 » : « \4 » devrait être au pluriel. TEST: ces petites sottes {{déjantée}} ## certains / certaines __gn_certains_1m__ |
︙ | ︙ | |||
11728 11729 11730 11731 11732 11733 11734 | # pied __sgpl_pied__ [>avoir|>perdre] pieds <<- /sgpl/ -2>> pied # Locution “\1 pied” : écrivez “pied” au singulier. à pieds | | | 11729 11730 11731 11732 11733 11734 11735 11736 11737 11738 11739 11740 11741 11742 11743 | # pied __sgpl_pied__ [>avoir|>perdre] pieds <<- /sgpl/ -2>> pied # Locution “\1 pied” : écrivez “pied” au singulier. à pieds <<- /sgpl/ not before("(?i)\\b(?:lit|fauteuil|armoire|commode|guéridon|tabouret|chaise)s?\\b") and not morph(>1, ">sculpter/") -2>> pied # Location “à pied” : écrivez “pied” au singulier.|https://fr.wiktionary.org/wiki/%C3%A0_pied [à|aux] >pied >levée <<- /sgpl/ ->> au pied levé # Locution adverbiale invariable. TEST: ils ont tout simplement perdu {{pieds}} TEST: ils y sont allés à {{pieds}}. |
︙ | ︙ | |||
13139 13140 13141 13142 13143 13144 13145 | [de|d’] ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:V¬:Y [de|d’] ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:V¬:Y [de|d’] ?[ne|n’]¿ [lui|leur] en @:V¬:Y <<- /infi/ --1>> =suggVerbInfi(\-1) # Après “de”, le verbe devrait être à l’infinitif. [de|d’] @:V1.*:Q¬:N <<- /infi/ not \2[0:1].isupper() | | | 13140 13141 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 | [de|d’] ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:V¬:Y [de|d’] ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:V¬:Y [de|d’] ?[ne|n’]¿ [lui|leur] en @:V¬:Y <<- /infi/ --1>> =suggVerbInfi(\-1) # Après “de”, le verbe devrait être à l’infinitif. [de|d’] @:V1.*:Q¬:N <<- /infi/ not \2[0:1].isupper() and not before("(?i)\\b(?:quelqu(?:e chose|’une?)|(?:l(es?|a)|nous|vous|me|te|se) trait|personne|point +$|rien(?: +[a-zéèêâîûù]+|) +$)") -2>> =suggVerbInfi(\2) # Le verbe devrait être à l’infinitif. TEST: d’en {{parlé}} sans cesse TEST: cela suffit de les {{aimait}} TEST: de ne leur en {{avancé}} que le nécessaire. TEST: de l’y {{poussé}} TEST: arrête d’y {{consacré}} autant de temps. |
︙ | ︙ | |||
13544 13545 13546 13547 13548 13549 13550 | !!!! OCR !! # Participes passés __ocr_être_participe_passé__ >être ~es?$ <<- /ocr/ not value(\1, "|êtres|") >>> | | | | 13545 13546 13547 13548 13549 13550 13551 13552 13553 13554 13555 13556 13557 13558 13559 13560 13561 | !!!! OCR !! # Participes passés __ocr_être_participe_passé__ >être ~es?$ <<- /ocr/ not value(\1, "|êtres|") >>> <<- /ocr/ \2.endswith("e") and morph(\2, ":V1.*:Ip.*:[13]s", ":[GMA]") and not before("(?i)\\belle +(?:ne +|n’|)$") -2>> =suggVerbPpas(\2, ":m:s") # Erreur de numérisation ? <<- /ocr/ __else__ and \2.endswith("s") and morph(\2, ":V1.*:Ip.*:2s", ":[GMA]") and not before("(?i)\\belles +(?:ne +|n’|)$") -2>> =suggVerbPpas(\2, ":m:p") # Erreur de numérisation ? __ocr_avoir_participe_passé__ >avoir ~es?$ <<- /ocr/ not value(\1, "|avoirs|") >>> <<- /ocr/ \2.endswith("e") and morph(\2, ":V1.*:Ip.*:[13]s", ":[GM]|>envie/") -2>> =suggVerbPpas(\2, ":m:s") # Erreur de numérisation ? |
︙ | ︙ | |||
13706 13707 13708 13709 13710 13711 13712 | TEST: ce sont des faits constestés. TEST: c’est un fait reconnu. TEST: fait pourtant avéré et corroboré par le même sondage. TEST: ce fait rapporté par des témoins au-delà de tout soupçon n’est pas contestable. #__[i]/infi(infi_faire)__ # (f(?:ai|[iî]|er|on)\w+) +({w_2}(?:ée?s?|ez)) @@0,$ | | | 13707 13708 13709 13710 13711 13712 13713 13714 13715 13716 13717 13718 13719 13720 13721 | TEST: ce sont des faits constestés. TEST: c’est un fait reconnu. TEST: fait pourtant avéré et corroboré par le même sondage. TEST: ce fait rapporté par des témoins au-delà de tout soupçon n’est pas contestable. #__[i]/infi(infi_faire)__ # (f(?:ai|[iî]|er|on)\w+) +({w_2}(?:ée?s?|ez)) @@0,$ # <<- morph(\1, ">faire/") and not before("(?i)\\b(?:en|[mtsldc]es?|[nv]ous|un) +$") and morph(\2, ":V", ":M") # and not (re.search("(?i)^fait$", \1) and \2.endswith("é")) # and not (re.search("(?i)^faits$", \1) and \2.endswith("és")) # -2>> =suggVerbInfi(@) # Le verbe devrait être à l’infinitif. __infi_me_te_se_faire__ [me|te|se] >faire ~(?:ée?s?|ez)$ |
︙ | ︙ | |||
13887 13888 13889 13890 13891 13892 13893 | TEST: sans fin elles se sont succédé __ppas_se_être__ [me|m’|te|se|s’] ?[y|en]¿ (>être) (*WORD) t’ [y|en] (>être) (*WORD) <<- /ppas/ morph(\2, ":(?:Y|[123][sp])", ":Q") -2>> =suggVerbPpas(\2) # Incohérence. Après « s’être », le verbe doit être un participe passé. | | | | 13888 13889 13890 13891 13892 13893 13894 13895 13896 13897 13898 13899 13900 13901 13902 13903 13904 13905 13906 13907 13908 | TEST: sans fin elles se sont succédé __ppas_se_être__ [me|m’|te|se|s’] ?[y|en]¿ (>être) (*WORD) t’ [y|en] (>être) (*WORD) <<- /ppas/ morph(\2, ":(?:Y|[123][sp])", ":Q") -2>> =suggVerbPpas(\2) # Incohérence. Après « s’être », le verbe doit être un participe passé. <<- /ppas/ __else__ and morph(\1, ":[123]s") and morph(\2, ":Q.*:p") and not before("(?i)\\bqu[e’][, ]|\\bon (?:ne |)$") -2>> =suggSing(\2) # Le participe passé devrait être au singulier. t’ >être *WORD <<- /ppas/ not value(\2, "|es|étais|") >>> <<- /ppas/ morph(\3, ":(?:Y|[123][sp])", ":Q") -3>> =suggVerbPpas(\3) # Incohérence. Après « s’être », le verbe doit être un participe passé. <<- /ppas/ __else__ and morph(\2, ":[123]s") and morph(\3, ":Q.*:p") and not before("(?i)\\bqu[e’][, ]|\\bon (?:ne |)$") -3>> =suggSing(\3) # Le participe passé devrait être au singulier. TEST: s’être {{donner}} le mot. TEST: je me suis {{donnés}} à fond TEST: c’est de ce qui s’est {{passe}}. TEST: Ça s’était toujours {{passe}} comme ça avec elle TEST: elle s’est {{approche}} de la penderie |
︙ | ︙ | |||
14855 14856 14857 14858 14859 14860 14861 | TEST: Nous l’avons {{mangés}}. TEST: Nous l’avons {{mangées}}. TEST: Ils ne me l’ont pas {{donnés}} __ppas_m_t_avoir__ [m’|t’] >avoir @:V[0-3]..t_.*:Q.*:p¬:[GWsi] | | | 14856 14857 14858 14859 14860 14861 14862 14863 14864 14865 14866 14867 14868 14869 14870 | TEST: Nous l’avons {{mangés}}. TEST: Nous l’avons {{mangées}}. TEST: Ils ne me l’ont pas {{donnés}} __ppas_m_t_avoir__ [m’|t’] >avoir @:V[0-3]..t_.*:Q.*:p¬:[GWsi] <<- /ppas/ not before("(?i)\\bqu(?:e |’)") -3>> =suggSing(\3) # Accord avec “\1”. S’il s’agit d’un COD, le participe passé “\3” devrait être au singulier (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais TEST: ces livres m’avaient {{ennuyés}} au-delà du dicible. TEST: Les élèves m’ont {{écoutés}}. TEST: Les élèves t’ont de temps en temps {{écoutées}}. TEST: Les élèves ne m’ont pas {{écoutés}}. TEST: Les élèves ne m’ont pas {{écoutées}}. |
︙ | ︙ | |||
15008 15009 15010 15011 15012 15013 15014 | !!!! Participes passés avec formes interrogatives !! !! !! __ppas_avoir_pronom__ *WORD /VCint *WORD <<- /ppas/ morphVC(\2, ":V0a") and morph(\3, ":(?:Y|2p|Q.*:[fp])", ":m:[si]") and \3 != "prise" | | | 15009 15010 15011 15012 15013 15014 15015 15016 15017 15018 15019 15020 15021 15022 15023 | !!!! Participes passés avec formes interrogatives !! !! !! __ppas_avoir_pronom__ *WORD /VCint *WORD <<- /ppas/ morphVC(\2, ":V0a") and morph(\3, ":(?:Y|2p|Q.*:[fp])", ":m:[si]") and \3 != "prise" and not morph(\1, ">(?:les|[nv]ous|en)|:[NA].*:[fp]") and not before("(?i)\\b(?:quel(?:le|)s?|combien) ") -3>> =suggMasSing(\3) # Avec “avoir”, il faut un participe passé au masculin singulier, sauf si un COD précède. <start> ?n’¿ (/VCint) *WORD <<- /ppas/ morphVC(\1, ":V0a") and morph(\-1, ":(?:Y|2p|Q.*:[fp])", ":m:[si]") and \-1 != "prise" --1>> =suggMasSing(\-1) # Avec “avoir”, il faut un participe passé au masculin singulier, sauf si un COD précède. __ppas_l_m_t_avoir_pronom__ |
︙ | ︙ | |||
15079 15080 15081 15082 15083 15084 15085 | <start> [ne|n’] ?[le|l’|en|me|m’|te|t’|nous|vous|lui|leur|y]¿ soit <start> [ne|n’] [me|m’|te|t’|nous|vous] [le|l’|en|y] soit <start> [ne|n’] [le|l’] [lui|leur|en|y] soit <start> [ne|n’] [lui|leur] en soit <<- /imp/ --1>> sois # S’il s’agit d’un impératif, écrivez “sois”. <start> soit @:A¬:G | | | 15080 15081 15082 15083 15084 15085 15086 15087 15088 15089 15090 15091 15092 15093 15094 | <start> [ne|n’] ?[le|l’|en|me|m’|te|t’|nous|vous|lui|leur|y]¿ soit <start> [ne|n’] [me|m’|te|t’|nous|vous] [le|l’|en|y] soit <start> [ne|n’] [le|l’] [lui|leur|en|y] soit <start> [ne|n’] [lui|leur] en soit <<- /imp/ --1>> sois # S’il s’agit d’un impératif, écrivez “sois”. <start> soit @:A¬:G <<- /imp/ not after(" soit ") -2>> sois # S’il s’agit d’un impératif, écrivez “sois”. TEST: ne lui {{soit}} pas odieux. TEST: {{Soit}} cohérent avec toi-même. TEST: Ne {{soit}} pas con. TEST: ne leur en {{soit}} pas reconnaissant, ce n’était qu’un calcul de leur part. TEST: Ne {{soit}} pas en retard ! |
︙ | ︙ | |||
16366 16367 16368 16369 16370 16371 16372 | TEST: certaine est la défaite. TEST: si tu persévères, certaine deviendra la réussite. __conj_det_plur_nom__ [ces|mes|tes|ses|nos|vos|leurs|quelques] @:[NA].*:[pi] @:V¬:(?:[13]p|P|Y|G|A.*:e:[pi]) <<- /conj/ morph(<1, ":C|<start>|>,") | | | | | | | | 16367 16368 16369 16370 16371 16372 16373 16374 16375 16376 16377 16378 16379 16380 16381 16382 16383 16384 16385 16386 16387 16388 16389 16390 16391 16392 16393 16394 16395 16396 16397 16398 16399 16400 16401 16402 16403 16404 16405 16406 16407 16408 16409 16410 16411 16412 16413 16414 16415 16416 16417 16418 16419 16420 16421 16422 16423 16424 16425 16426 | TEST: certaine est la défaite. TEST: si tu persévères, certaine deviendra la réussite. __conj_det_plur_nom__ [ces|mes|tes|ses|nos|vos|leurs|quelques] @:[NA].*:[pi] @:V¬:(?:[13]p|P|Y|G|A.*:e:[pi]) <<- /conj/ morph(<1, ":C|<start>|>,") and not( morph(\3, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>> <<- /conj/ not checkAgreement(\2, \3) -3>> =suggVerb(\3, ":3p") # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel. <<- /conj/ __else__ and isAmbiguousAndWrong(\2, \3, ":p", ":3p") -3>> =suggVerb(\3, ":3p", suggPlur) # Accord avec « \1 \2… » incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. [ces|mes|tes|ses|nos|vos|leurs|quelques] @:[NA].*:[pi] qui @:V¬:(?:[13]p|P|Y|G|A.*:e:[pi]) <<- /conj/ morph(<1, ":C|<start>|>,") and not( morph(\4, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) -4>> =suggVerb(\4, ":3p") # Conjugaison erronée. Accord avec “\1 \2 \3…”. Le verbe devrait être à la 3ᵉ personne du pluriel. TEST: Ses « chiens » {{coure}} sur ma pelouse. TEST: mes filles {{passe}} ce matin TEST: vos filles {{passes}} ce matin TEST: ces travaux qui {{demande}} tant d’efforts. TEST: vos questions ne {{réclame}} aucune réflexion. TEST: le lien entre les agences de renseignement et ces mêmes entreprises pouvait reposer sur des activités de surveillance à proprement parler. __conj_det_plur_nom_confusion__ les @:[NA].*:[pi] @:V¬:(?:3p|P|Y|G|A.*:e:[pi]) <<- /conj/ morph(<1, ":C|<start>|>,") and not( morph(\3, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>> <<- /conj/ not checkAgreement(\2, \3) -3>> =suggVerb(\3, ":3p") # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel. <<- /conj/ __else__ and isVeryAmbiguousAndWrong(\2, \3, ":p", ":3p", value(<1, "|<start>|,|")) -3>> =suggVerb(\3, ":3p", suggPlur) # Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. [certains|certaines] @:[NA].*:[pi] @:V¬:(?:3p|P|Y|G|A.*:e:[pi]) <<- /conj/ morph(<1, ":C|<start>|>,") and not( morph(\3, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) >>> <<- /conj/ not checkAgreement(\2, \3) -3>> =suggVerb(\3, ":3p") # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel. <<- /conj/ __else__ and isVeryAmbiguousAndWrong(\2, \3, ":m:p", ":3p", value(<1, "|<start>|,|")) -3>> =suggVerb(\3, ":3p", suggMasPlur) # Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. <<- /conj/ __else__ and isVeryAmbiguousAndWrong(\2, \3, ":f:p", ":3p", value(<1, "|<start>|,|")) -3>> =suggVerb(\3, ":3p", suggFemPlur) # Accord avec “\1 \2…” incorrect. Conjugaison erronée ou accord nom/adjectif incorrect. plusieurs @:[NA].*:[pi] @:V¬:(?:3p|P|Y|G|A.*:e:[pi]) <<- /conj/ morph(<1, ":C|<start>|>,") and not( morph(\3, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) and not checkAgreement(\2, \3) -3>> =suggVerb(\3, ":3p") # Conjugaison erronée. Accord avec “\1 \2…”. Le verbe devrait être à la 3ᵉ personne du pluriel. [les|certains|certaines|plusieurs] @:[NA].*:[pi] qui @:V¬:(?:[13]p|P|Y|G) <<- /conj/ morph(<1, ":C|<start>|>,") and not( morph(\4, ":3s") and before("(?i)\\b(?:l[ea] |l’|une? |ce(?:tte|t|) |[mts](?:on|a) |[nv]otre ).+ entre .+ et ") ) -4>> =suggVerb(\4, ":3p") # Conjugaison erronée. Accord avec “\1 \2 \3…”. Le verbe devrait être à la 3ᵉ personne du pluriel. TEST: Les abstentions {{est}} présumée manifester un défaut d’opinion marquée TEST: Les cours de culture générale nous {{apporte}} de l’ouverture d’esprit. TEST: Les hommes ne le lui {{pardonnes}} pas. TEST: Les infirmières à mi-temps ne {{travaille}} pas dans cette aile. TEST: les données, en quantité plus que suffisante, {{indique}} que… |
︙ | ︙ | |||
16467 16468 16469 16470 16471 16472 16473 | #### NOMS PROPRES # 3sg __conj_nom_propre__ ~^[A-ZÉÈ] @:[123][sp]¬:(?:G|3s|3p!|P|M|A.*:[si]|N.*:m:s) | | | | | 16468 16469 16470 16471 16472 16473 16474 16475 16476 16477 16478 16479 16480 16481 16482 16483 16484 | #### NOMS PROPRES # 3sg __conj_nom_propre__ ~^[A-ZÉÈ] @:[123][sp]¬:(?:G|3s|3p!|P|M|A.*:[si]|N.*:m:s) <<- /conj/ not before("\\b[dD]e l’ *$") and morph(\1, ":M") and not morph(<1, ":[VRD]|>(?:ni|et|ou)/") and not before("([A-ZÉÈ][\\w-]+), +([A-ZÉÈ][\\w-]+), +$") and not ( morph(\2, ":3p") and before("\\w") ) -2>> =suggVerb(\2, ":3s") # Conjugaison erronée. Accord avec “\1”. Le verbe devrait être à la 3ᵉ personne du singulier. TEST: Marc {{arrives}} demain. TEST: Paul ne {{viens}} pas demain. TEST: Marc Aurèle {{étaient}} l’empereur des Romains. (Pas de trait d’union sur Marc Aurèle.) TEST: Arthur D. parvient à… TEST: Les fondateurs pionniers de l’Internet n’avaient pas prévu |
︙ | ︙ |