Re: Regular Expression Help
- From: Giorgos Keramidas <keramida@xxxxxxxxxxxxxxx>
- Date: Sun, 30 Nov 2008 20:24:21 +0200
On Sun, 30 Nov 2008 09:14:53 -0800, Drew Tomlinson <drew@xxxxxxxxxxxxxxxxxx> wrote:
I'm attempting to take an ldiff file and flip first/last name order.
However I can not figure out how to match hyphenated last names. In
vim, my current search/replace string is:
%s/cn=\(\w\+\-*\) \(\w\+\),/cn=\2 \1,/gc
Hi Drew,
Depending on the VI implementation you are using this may not work
because some versions don't support `\w' as a character class. The
regular expession, when translated to Perl, works fine though:
$ cat foo
cn=Smith Joe,
cn=Smith-Brown Joe,
$ perl -pe 's/^cn=(\w+-*\w+) (\w+),/cn=$2 $1,/' foo
cn=Joe Smith,
cn=Joe Smith-Brown,
$
So you can just use Perl and the `extended regexp' syntax that includes
`\w', `\d' and other special character classes.
If you really _have_ to use VI to do this sort of replacement though,
you may have to write the fully expanded form of `\w' to make this work:
%s/^cn=\([A-Za-z]\+[A-Za-0-9]*[A-Za-z]*\) \([A-Za-z]\+[A-Za-0-9]*[A-Za-z]*\),/cn=\2 \1,/
Using the same \(...\) expression for both the `name' and `surname' part
may be useful if you want to switch _back_ to the original format too,
since it will swap words for all of the following:
cn=Smith Joe,
cn=Smith-Brown Joe,
cn=Smith Marie,
cn=Smith Anne-Marie,
cn=Smith-Brown Anne-Marie,
_______________________________________________
freebsd-questions@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "freebsd-questions-unsubscribe@xxxxxxxxxxx"
- References:
- Regular Expression Help
- From: Drew Tomlinson
- Regular Expression Help
- Prev by Date: Re: Regular Expression Help
- Next by Date: Re: Regular Expression Help
- Previous by thread: Re: Regular Expression Help
- Index(es):
Relevant Pages
|