为什么单词边界不匹配?

时间:2013-05-16 20:29:36

标签: regex bash

我有以下文件,我想从中匹配一组特定文件

TS_1.zip
The one.zip
Linux Mirror.zip
Linux.Mirror.zip
LinuxWindows1.zip
LinuxWindows2.zip
LinuxWindows3.zip
LinuxWindows4.zip
Linux.Windows.zip
TS_1.xls
The one.txt

我正在使用的正则表达式是;

Linux(?=Windows).*\.zip/g

我尝试使用但它与任何模式都不匹配;

Linux(?=\bWindows).*\.zip/g

我原以为\b会匹配“Windows”这个词

1 个答案:

答案 0 :(得分:4)

x中的LinuxW中的Windows之间,没有字边界。单词边界由单词字符和非单词字符之间的过渡定义。 xW都是单词字符,因此这里没有转换点。正则表达式引擎并不聪明地检测到LinuxWindows是2个不同的单词。

正则表达式应该如下:

LinuxWindows.*\.zip

但由于我不知道该工具或您如何阅读输入,我不知道它是否正确。根据工具的不同,它可能会返回OtherTextLinuxWindows1.zip的匹配项,这可能不是您想要的。