RegEx для удаления нежелательного текста - PullRequest
1 голос
/ 10 сентября 2010

Я все еще новичок в RegEx в целом.Я пытаюсь извлечь имена из поля, чтобы я мог разделить их для дальнейшего использования (используя Pentaho Data Integration / Kettle для извлечения данных).Вот пример строки, которую мне дают:

CN=Name One/OU=Site/O=Domain;CN=Name Two/OU=Site/O=Domain;CN=Name Three/OU=Site/O=Domain

Я хотел бы получить следующий формат:

Name One;Name Two;Name Three

Kettle использует регулярные выражения Java.

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

Звучит так, как будто вы хотите заменить и заменить на основе регулярного выражения. Как правильно это сделать, зависит от вашего языка. Но с помощью sed я бы сделал это так:

echo "CN=Name One/OU=Site/O=Domain;CN=Name Two/OU=Site/O=Domain;CN=Name Three/OU=Site/O=Domain" |\
sed 's/CN=\([^\/]*\)[^;]*/\1/g'

Если вы все равно собираетесь разделить его позже, возможно, вы просто захотите сопоставить имена и вернуть их в цикле. Пример кода в perl:

#!/usr/bin/perl
$line="CN=Name One/OU=Site/O=Domain;CN=Name Two/OU=Site/O=Domain;CN=Name Three/OU=Site/O=Domain";
for $match ($line =~ /CN=([^\/]*)/g ){
  print "Name: $match\n";
}
0 голосов
/ 10 сентября 2010

при условии, что он есть в файле file.txt:

sed -e  's/\/OU=Site\/O=Domain//g' -e 's/CN=//g' file.txt
...