题
总体而言,我仍然是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
水壶使用Java正则表达式。
解决方案
听起来您想根据正则替代和替换。如何正确完成这取决于您的语言。但是有了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";
}
其他提示
假设您将其包含在file.txt中:
sed -e 's/\/OU=Site\/O=Domain//g' -e 's/CN=//g' file.txt
不隶属于 StackOverflow