我希望我只是忽略了这里显而易见的东西,但是我究竟如何使用 Microsoft Word 2010 的“Regex”引擎匹配零个或多个空格?
举一个简单的例子,我想匹配捕获组中的以下所有内容:
cowseat grass
cows eat grass
cows eat grass
cows eat grass
cows eat grass
我通常会这样做(cows\s*eat grass)
并完成它。但我不知道如何匹配零个或多个空格。我想在捕获组中捕获整个短语,但我的空格数量可变。
我一直在使用这个文件作为参考。
答案1
您链接到的文档显示,微软的“正则表达式”实际上根本不是正则表达式;它们是 shell 风格通配符的奇怪混合体(更确切地说是私生子)(http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/html/x11655.htm) 和真正的正则表达式。
由于 glob 语法使用*
字符作为正则表达式的同义词.*
,并且微软决定(如评论中所述)将其@
等同于正则表达式量词+
而不是*
(这很愚蠢,因为对于任何原子都a+
等同于,因此没有必要),看起来你运气不佳。aa*
a
+
我个人的看法是:(1) 这很愚蠢,(2) 将这些模式称为“正则表达式”充其量也是一种误导,但不幸的是,除了放弃 Word 而使用能够正确支持正则表达式的工具外,我找不到任何解决办法。(不过,理论上,我认为你可以尝试解析 docx 文件本身的 xml-ish 格式,提取文本,然后然后应用你的正则表达式....)