Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Rex Exp] Problema con agrave, egrave, igrave, ...

    Ciao,
    ho un problema con agrave e tutte le altre lettere accentare nei pattern delle regular expression.
    Per esempio se importo il pattern a \b(universitā)\b, e faccio il match nella stringa "bar dell'universitā di ingegneria", non mi trova nessuna ccorrispondenza.
    Ho provato ad inserire anche \b(universit[à])\b oppure \b(universit[à])\b, ma non funziona comunque.
    Come posso fare?

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    il pattern non matcha perchč definisce universitā come parola unica, ma nella tua frase č preceduta da " dell' "

    Se ci fosse uno spazio tra l'apice e la parola universitā funzionerebbe
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    No non funzionerebbe comunque, ho giā provato.
    Comunque l'apice viene considerato come separatore di word.
    ES:
    se cerco "\b(abcd)\b" in "zzzzz zz'abcd zzzz" lo trova.

  4. #4
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    <script type="text/javascript">
    // <![CDATA[

    var str = "bar dell'universitā";
    if (str.match(/\b(universitā)/)) {
    alert('ok');
    }
    // ]]>
    </script>
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  5. #5
    <script type="text/javascript">
    // <![CDATA[

    var str = "bar dell'universitāaaa";
    if (str.match(/\b(universitā)/)) {
    alert('ok');
    }
    // ]]>
    </script>

  6. #6
    Ti sarai accorto che c'č qualche cosa che non va.

    str = "bar dell'universito di ingegneria"
    pattern = "\b(universito)\b"
    codice:
    <script type="text/javascript">
    // <![CDATA[
    var str = "bar dell'universito di ingegneria";
    if (str.match(/\b(universito)\b/)) {
    alert('ok');
    }
    // ]]>
    </script>
    lo metcha


    str = "bar dell'universitā di ingegneria"
    pattern = "\b(universitā)\b"
    codice:
    <script type="text/javascript">
    // <![CDATA[
    var str = "bar dell'universitā di ingegneria";
    if (str.match(/\b(universitā)\b/)) {
    alert('ok');
    }
    // ]]>
    </script>
    NON lo metcha

    Eppure ho solo cambiato la "o" con la "ā"

  7. #7
    In questa pagina(http://www.regular-expressions.info/unicode.html) ho letto che i caratteri ōāųčéė devono essere letti come caratteri unicode, ma se metto il pattern a "\(buniversit[\e00E0])\b", non mi riconosce la lettera comunque.

    Nessuna idea?!?!?

  8. #8
    Utente di HTML.it L'avatar di willybit
    Registrato dal
    May 2001
    Messaggi
    4,367
    credo che questo sia un bug delle regular expression (la stessa cosa succede anche in vbscript)
    in questo caso la ā viene vista come fineparola (\b)
    infatti se provi a fare cosė
    codice:
    var re = /\b(universit)\b/
    var str = "bar dell'universitā di ingegneria";
    document.write(str+'
    '+re.source+'
    ');
    if(re.test(str)) {
      var ris=str.match(re)
      for(var i=0;i<ris.length;i++)
        document.write('&gt;'+ris[i]+'&lt;
    ');
    }
    ti tira fuori "universit"
    quindi bisogna usare qualcosa di diverso dal \b
    si potrebbe fare cosė
    codice:
    var re = /(^|\s|')(universitā)(\s|$|')/
    var str = "bar dell'universitā di ingegneria";
    document.write(str+'
    '+re.source+'
    ');
    if(re.test(str)) {
      var ris=str.match(re)
      for(var i=0;i<ris.length;i++)
        document.write('&gt;'+ris[i]+'&lt;
    ');
    }

  9. #9
    il problema si puō parzialmente risolvere esplicitando l'asserzione in avanti (\b) --> (?=\W), per l'inizio parola no perchč javascript non supporta le asserzioni all'indietro. Quindi tocca fare come dice giustamente willybit, utilizzando magari direttamente il negato della classe alfanumerica:

    codice:
    var str = "bar dell'āniversitā di ingegneria";
    re = /\W(āniversitā)(?=\W)/
    if ((sbstr=str.match(re))) alert(sbstr[1])
    in teoria dovrebbe funzionare
    dA .. foto di viaggio
    L'esperienza č il tipo di insegnante pių difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.