regex - Perl 在逗号上拆分列表,除非在括号内?

标签 regex perl

我有一个数据库,其中包含多个包含逗号分隔值的字段。我需要在 Perl 中拆分这些字段,这很简单,只是其中一些值后面是嵌套在括号中的 CSV,我不想拆分。

例子:

recycling, environmental science, interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics), consumer education

拆分“,”给了我:
recycling
environmental science
interdisciplinary (e.g.
consumerism
waste management
chemistry
toxicology
government policy
and ethics)
consumer education

我想要的是:
recycling
environmental science
interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics)
consumer education

任何 Perl 正则表达式(perts)都可以帮忙吗?

我尝试修改我在类似 SO post 中找到的正则表达式字符串不返回任何结果:
#!/usr/bin/perl

use strict;
use warnings;

my $s = q{recycling, environmental science, interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics), consumer education};

my @parts = $s =~ m{\A(\w+) ([0-9]) (\([^\(]+\)) (\w+) ([0-9]) ([0-9]{2})};

use Data::Dumper;
print Dumper \@parts;

最佳答案

尝试这个:

my $s = q{recycling, environmental science, interdisciplinary (e.g., consumerism, waste management, chemistry, toxicology, government policy, and ethics), consumer education};

my @parts = split /(?![^(]+\)), /, $s;

关于regex - Perl 在逗号上拆分列表,除非在括号内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9435564/

相关文章:

Javascript 正则表达式 : Using variables in backreference pattern?

regex - 解析日志文件,检查日期,报告结果

XML::Twig 使用正则表达式匹配处理程序标记 (perl v5.30.3 XML Twig v3.52)

perl - 将键值保存在两个不同的变量中

mysql - 为什么 mysql 给我一个语法错误,而似乎没有语法错误?

html - Perl -> HTML 多项选择解析器

Java 编译与 Perl 编译

iPhone/ cocoa : NSPredicate regex replace?

php - 重定向而不更改浏览器 url

正则表达式在斜杠之间查找字符串