【发布时间】:2014-05-30 18:20:37
【问题描述】:
我正在编写一个 perl 脚本,其中一部分要求我匹配字符串中某个模式的所有出现。自然地,正则表达式似乎足够强大,但我就是无法正确处理这个特定的字符串。
正则表达式可能应用于的文本类型的假设示例是:
1cat;2dog;!3monkey;!4horse;
如您所见,行中存在多个数据条目(1cat、2dog 等),以分号分隔。行首不包含分号,但行尾包含分号。我希望能够匹配所有没有被 ! 删除的东西。在上面的示例中,1cat 和 2dog 将在列表上下文中匹配并返回,而 3monkey 和 4horse 则不会。
到目前为止,我尝试做的是使用否定的lookbehinds 来只注意没有!的条目。像这样的:
m/(?<!\!)(\w+)\;/g
但是,它不起作用,因为对于每个 !'ed 条目,正则表达式只匹配它后面的内容,直到分号。在示例中,捕获了 1cat 和 2dog,但随后捕获了猴子和马。
我觉得这很容易做到,但我是正则表达式的新手,我想不出别的。
【问题讨论】:
标签: regex perl delimiter regex-lookarounds