【发布时间】:2014-02-27 21:31:31
【问题描述】:
将分组与拆分操作一起使用是否有一些注意事项?
在 perl 中:
print join("|",split(m/(A|AND)/,"foo A bar"))."\n";
预期:
foo | bar
输出:
foo |A| bar
Powershell 的预期/输出相同:
([regex]::Split("foo A bar","(A|AND)"))-join"|"
似乎在使用分组时出现了问题——没有括号一切都很好:
([regex]::Split("foo A bar","A|B"))-join"|"
输出如预期:
foo | bar
但是当我引入分组以能够使用多字符交替(由填充字符包围 - “\s(A|AND)\s”)时,拆分开始出现意外行为。
这里的拆分实际上是做什么的——正在执行什么样的拆分?为什么没有执行我可能期望的拆分?我的替代方案是什么?
【问题讨论】:
-
是的,捕获组在捕获的数据数组中生成一个元素。使用
(?:A|B)消除分隔符。拥有这种能力虽然是非常强大的。例如,您可以同时过滤和拆分。
标签: regex perl powershell split