正则表达式在月份名称或缩写之前查找空格

标签 regex powershell

在 Powershell 脚本中,我尝试编写一个正则表达式来查找月份名称或缩写之前的空格(例如 Jan、January、Feb、February 等)。我用它来驱动 -replace 运算符。我构建了这个大部分有效的正则表达式,但它也找到了 Jane、Marcus 等作品之前的空格。我希望只找到确切单词之前的空格,例如 Jan、January、Mar、March 等。有什么想法吗?

[ ](?=Jan|(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)

预先感谢您的帮助。

最佳答案

你大部分都说对了。缺少的部分是词尾 anchor \b,它会阻止匹配较长单词的前缀:

\s(?=(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\b)

Demo.

注意:这也将 [ ] 替换为 \s,它也匹配制表符和换行符。

关于正则表达式在月份名称或缩写之前查找空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45679481/

相关文章:

java - 将替换字符串中的所有字符串替换为正则表达式?

javascript - 片段 url 的正则表达式,但不是完整的

powershell - 获取文件扩展名的文件类型描述

forms - Powershell invoke-webrequest登录网站

Powershell:如何安装 cmdlet?

java:在流中搜索和替换

java - 正则表达式匹配不在 <a> 标签内的短语

javascript - 如何在 Javascript 中对正则表达式反向引用匹配执行操作?

具有初始容量的 Powershell 哈希表

powershell - 将 map 对象存储在数组中