2010-03-23 6 views
7

Je construis un CMS pour un journal scientifique et qui utilise beaucoup de caractères grecs. J'ai besoin de valider un champ pour inclure un jeu de caractères spécifique et des caractères grecs. Voici ce que j'ai maintenant:Les caractères grecs, les expressions régulières, et C#

[^a-zA-Z0-9-()/\s] 

Comment puis-je obtenir ce à inclure des caractères grecs en plus alphanumérique, « (», «) », « - » et « _ »? En passant, j'utilise C#.

+6

Quel langage de programmation? – kennytm

+0

Pourquoi la langue est-elle importante? RegEx a ses propres normes, n'est-ce pas? – Romain

+3

Le langage de programmation * et le format de chaîne * (locale) sont tous les deux importants. – Gabe

Répondre

4

Dans les langages .NET, vous pouvez utiliser \p{IsGreekandCoptic} pour faire correspondre les caractères grecs. Ainsi, le résultat est regex

[^a-zA-Z0-9-()/\s\p{IsGreekandCoptic}] 

\p{IsGreekandCoptic} matches:

These characters will be matched by \p{IsGreekandCoptic} http://img203.imageshack.us/img203/3760/greekcoptic.png

+0

quel outil avez-vous utilisé pour créer l'image "caractères dans ce bloc"? –

+1

@ user309483: [RegexBuddy] (http://www.regexbuddy.com) –

+0

Bonjour, ce modèle ne fonctionne pas pour moi, qu'est-ce qui me manque? ^ [A-Za-z0-9 \ p {IsGreekandCoptic} \ - \.] + $ –

1

Pour Java, à partir du motif javadoc:

\ p {} InGreek Un caractère dans le bloc grec (simple bloc)

3

Si vous utilisez une langue qui utilise PCRE Pour les expressions régulières et UTF-8, /[\x{0374}-\x{03FF}]+/u doit correspondre aux caractères grecs. Les caractères grecs se situent entre U + 0374 et U + 03FF (source), et le modificateur u indique à PCRE d'utiliser unicode. Comme indiqué ci-dessous, /\p{Greek}+/u fonctionne également avec PCRE. Si vous utilisez Javascript, il utilise \uXXXX au lieu de \x{XXXX}: /[\u0374-\u03FF]+/.

Voir également ce guide pour Unicode Regular Expressions pour plus d'informations.

+2

Si vous avez PCRE, utilisez simplement '\ p {Greek}'. –

0

être ma première réponse sur, je ne peux pas downvote la réponse de Daniel sur javascript regex.

Je sais que c'est très en retard, mais la réponse de Daniel est incorrecte. Il exclut les caractères anciens ci-dessous! Ceci est important si vous travaillez sur une application biblique qui recherche des mots en grec ancien!

Ceci est la regex correcte pour trouver grec & Copte dans js:

/[\u0370-\u03FF]+/gm 

http://unicode.org/charts/PDF/U0370.pdf

Extrait du tableau:

0370 Ͱ LETTRE MAJUSCULE GRECQUE HETA → 2C75 Ⱶ latin lettre majuscule moitié h

0371 ͱ GRECQUE LETTRE HETA → 2C76 ⱶ lettre minuscule latine moitié h

0372 Ͳ LETTRE MAJUSCULE GRECQUE ARCHAIC SAMPI

0373 ͳ GRECQUE LETTRE ARCHAIC SAMPI

EDIT: souligne Craig que L'expression rationnelle de Daniel est correcte pour l'OP. Bien que je ne puisse trouver où l'OP spécifie le texte grec qu'il évalue, je reconnais que ma réponse n'est valable que pour les textes anciens. Pendant que je suis en train d'éditer cela, je tiens également à souligner qu'aucune expression rationnelle ne correspond ici aux caractères grecs avec le type d'accentuation que Perseus ajoute à leurs textes. Donc, si vous installez le http://www.perseus.tufts.edu/hopper/, ou utilisez l'une de leurs ressources de domaine public dans une application, faites attention avec mon regex.

+0

Merci pour la contribution et bienvenue à ALORS. La question a été posée dans le contexte de l'état moderne de l'alphabet grec et non dans l'ancienne version de l'alphabet. – craigmoliver

Questions connexes