Alexander (HH): umlaut in regulärem Ausdruck

Beitrag lesen

Moin Moin!

»» ich möchte dass ein Wort exakt in einem String gefunden wird, dazu benutze ich die Wortgrenze \b
»» Das funktioniert auch herforagend, solange das gesuchte Wort nicht mit einem Umlaut beginnt.

Die englischsprachigen Entwickler haben nicht über ihren Tellerrand hinausgeschaut.

Falsch. So beschränkt ist zwar Javascript, aber Perl KANN mit anderen Sprachen umgehen. Man muß Perl nur mitteilen, dass man auf Deutsch arbeiten möchte:

  
#!/bin/bash  
env -i LC_ALL=de_DE /usr/bin/perl -e '           $_="abcädef ghißjkl";s/\b/*/g;print"$_\n"'  
env -i LC_ALL=de_DE /usr/bin/perl -e 'use locale;$_="abcädef ghißjkl";s/\b/*/g;print"$_\n"'  

Beide Demonstrationen ersetzen Wortgrenzen (\b) durch Sterne. Ohne Locale zählen ä und ß als Nicht-Wortzeichen, mit deutscher Locale zählen sie als Wortzeichen. Entsprechend sieht das Ergebnis aus:

*abc*ä*def* *ghi*ß*jkl*
*abcädef* *ghißjkl*

Das geht natürlich auch zur Laufzeit:

  
#!/usr/bin/perl -w  
  
use locale;  
use POSIX qw(locale_h);  
  
setlocale(LC_ALL,'de_DE');  
  
{  
	no locale;  
	$_="abcädef ghißjkl";  
	s/\b/*/g;  
	print"$_\n";  
}  
{  
	use locale;  
	$_="abcädef ghißjkl";  
	s/\b/*/g;  
	print"$_\n";  
}  

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".