2009-05-22 7 views
6

Reguläre Ausdrücke verwenden \ B, um A..Z, a..z, 0..9 und _ einzuschließen, und \ b ist als Wortgrenze definiert.Wie lautet der reguläre Ausdruck für ein spanisches Wort?

Wie kann ich einen regulären Ausdruck schreiben, der mit allen gültigen spanischen Wörtern übereinstimmt, einschließlich Zeichen wie: á, í, ó, é, ñ, usw.?

Ich benutze .NET.

Antwort

6

Verwenden Sie ein spanisches Gebietsschema und machen Sie Ihre Regex Gebietsschema-empfindlich.

1

Ihr Regex-System sollte etwas haben, das Pythons re.L (alias re.LOCALE) entspricht, um eine Regex-Gebietsschema-abhängig zu machen Fragen Sie stattdessen nach einer Möglichkeit, ein gegebenes Regex-System zu kompensieren nicht unterstützt Gebietsschema, versucht, das Problem trotzdem zu erzwingen ...?

1

Dies hängt stark von der Sprache (und der Regex-Engine) ab, die Sie verwenden.

In Perl, \w passt alle Wortzeichen, unabhängig von Sprache oder Alphabet, und etwas wie würde (wahrscheinlich) Spanisch Wörter sowie Englisch Wörter oder russische Wörter entsprechen.

In Sprachen, die PCRE verwenden, \w (und daher wahrscheinlich \b) stimmen Sie nicht mit Unicode-Zeichen überein. Sie werden wahrscheinlich Ihr eigenes Set bauen müssen. Ich schlage etwas wie [\wáéíóúñ] vor (entspricht allen Wortzeichen plus den akzentuierten Zeichen, die Sie wollen), und die PCRE-Bibliothek muss mit Unicode-Unterstützung vorgefertigt werden, bevor dies überhaupt funktioniert.

Wenn Sie etwas anderes verwenden, viel Glück. Einige Regex-Engines unterstützen nicht einmal Unicode.

Verwandte Themen