我想在perl中使用二进制OR运算符从文件中获取一些信息。我用这个正则表达式为什么这个OR运算符不在perl中工作
/(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',除非有零,否则你永远不会得到多于一次的比赛。 – simbabque
输入是超过1000行的大文件。该文件具有完全“问题#”和“修复#”。 – Hukh
文件的大小对我们无关紧要。您可以包含您认为应该匹配的一行,以及不应包含的一行。更好的是,编辑你的问题,并包括你编写的完整程序。正如下面的choroba指出的那样,这应该起作用。所以这个bug可能在我们看不到的代码中。 – simbabque