Alessandro, Alessandro Lenzen wrote: >-------------------------------- >#!/usr/bin/perl -w >use strict; > >my($string) = "This is a test!"; >my($ergebnis); > >$string =~ m/(\s\w+\s)/g; >$ergebnis = $1; >print("$ergebnis\n"); >-------------------------------- > >Shouldn't a be printed? I'm assuming, first of all, that you expect an ' a ' character to be printed. (It's not totally clear from your posting that this is what you meant, but it's the most reasonable translation I can make. :) ) Before any analysis, I'd like to point out an important rule of regular expressions (taken from _Mastering Regular Expressions_ by Jeffrey E. F. Friedl): The earliest match wins. ------------------------ So now let's look at the regular expression: \s indicates a single whitespace character \w+ indicates one or more word characters \s indicates a single whitespace character And to recap, the test string is 'This is a test!'. So what we're attempting to match is a sequence of one or more word characters bounded on both sides by a single whitespace character. Both ' is ' and ' a ' fit this description. Because _the earliest match wins_, ' is ' is matched rather than ' a '. (Whitespace is included in the $1 due to your placement of parentheses.) If you wanted to get ' a ' instead, you'd have to change '\w+' to '\w'. And if you wanted 'a' rather than ' a ', you'd use the expression '\s(\w)\s' (excluding single-quotes, of course) to grab *only* the word character. Does that help? John -- John Fox <[EMAIL PROTECTED]> System Administrator, InfoStructure, Ashland OR USA --------------------------------------------------------- "What is loved endures. And Babylon 5 ... Babylon 5 endures." --Delenn, "Rising Stars", Babylon 5 -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]