【发布时间】:2017-04-14 00:29:32
【问题描述】:
我正在尝试在 perl 中使用二进制 OR 运算符从文件中获取一些信息。我用了这个正则表达式
/(fix|issue)\s*#/mi
但它没有找到任何匹配项。 在文件中有 4 个匹配 'fix #' 和 3 个匹配 'issue #',我在没有 OR 运算符的情况下单独使用它们时是正确的。
/fix\s*#/mi
/issue\s*#/mi
所以 OR 假设返回 7 个匹配项,但它什么也不返回。
这两行正好在文件中
Add test for the example in issue #142.
Fix #1190
我这样做对吗?
感谢您的帮助
【问题讨论】:
-
这不是二进制 OR,而是正则表达式中的 OR。没有看到您的真实输入,我们不知道您的模式是否有效。如果没有
/g,除非匹配为零,否则您将永远不会得到超过一个匹配。 -
输入是1000多行的大文件。该文件正好有“问题#”和“修复#”。
-
文件的大小对我们来说并不重要。您可以包含您认为应该匹配的一行,以及不应该匹配的一行。更好的是,edit 您的问题并包含您编写的完整程序。正如下面的 choroba 指出的那样,这应该有效。所以bug很可能在我们看不到的代码中。
-
我从文件中复制粘贴两行。谢谢你。
-
没有区别,但它有助于提供上下文。现在请出示您的代码。
标签: perl