Expression régulière: \w - “_” + “-” en UTF-8
J'ai besoin d'une expression régulière qui correspond à UTF-8 caractères, lettres et chiffres, le tableau de signe (-
) mais ne correspond pas à des traits de soulignement (_
), j'ai essayé ces stupides tentatives sans succès:
([\w-^_])+
([\w^_]-?)+
(\w[^_]-?)+
La \w
est un raccourci pour [A-Za-z0-9_]
, mais il correspond aussi à l'UTF-8, les caractères, si j'ai le u
modificateur de jeu.
Quelqu'un peut m'aider avec ça?
Veuillez être précis au sujet de "UTF-8 lettres" - pouvez-vous confirmer que vous voulez et pas seulement les caractères en anglais?
Je veux anglais et accentués / caractères étrangers.
Je veux anglais et accentués / caractères étrangers.
OriginalL'auteur Alix Axel | 2010-01-14
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Il fait un match simple sur tout ce qui est codé comme une \w (ou un tiret) et a une largeur nulle lookbehind qui assure que le caractère qui vient d'être appariés n'est pas un trait de soulignement.
Sinon, vous pourriez choisir ce un seul:
qui est une série de plus, l'approche basée (notez les majuscules W)
OK, j'ai eu beaucoup de plaisir avec unicode en php saveur des PCREs 😀
Coucou dit qu'il y a une solution simple, disponibles:
\p{L} correspond à tout ce unicode qui est considérée comme une Lettre (note: pas un caractère de mot, donc pas de traits de soulignement), tandis que \p{N} correspond à tout ce qui ressemble à un numéro (y compris les chiffres romains et les plus exotiques de choses).
\- est juste une fuite de tableau de bord. Bien que n'étant pas strictement nécessaire, j'ai tendance à faire un point de s'échapper des tirets dans les classes de personnage... Remarque, qu'il y a des dizaines de différents tirets dans unicode, donnant ainsi naissance à la version suivante:
Où "Pd" est la Ponctuation de tableau de bord, y compris, mais pas limité à notre moins-dash-bidule. (Remarque, encore une fois pas de souligner ici).
cela ne correspond pas à des caractères accentués pour moi.
Autant que je sache, le trait d'union n'est pas inclus dans \w - et même s'il l'était, il ne serait pas mal de le dire comme ça 😉
OP unis: "Le \w [...] correspond également à l'UTF-8, les caractères si j'ai le modificateur 'u'."
\p{N} comprend toutes les sortes de nombres - autant que je sache Nd ne l'0-9 de la danse, tout en Nl comprend romain littéraux (en unicode romaine 1 n'est pas la lettre que j'ai, mais plutôt quelque chose qui ressemble à ça) et N'est à peu près tout ce qu'ils ne pouvaient pas trouver dans les deux autres, mais il est encore un certain nombre.
OriginalL'auteur gha.st
Je ne suis pas sûr de la langue que vous utilisez, mais en PERL, vous pouvez simplement écrire: [[:alnum:]-]+ lorsque le local est spécifié.
Il a essayé en PHP et Rubular (Ruby), voir rubular.com/regexes/12922 et rubular.com/regexes/12923.
J'ai corrigé une petite erreur là.
[:alnum:] pourrait être remplacé par \p{IsAlnum} PCRE vous pouvez essayer de \p{L}\p{N}
OriginalL'auteur Jiri Klouda