正则表达式在一个月之前找到空格名称或缩写

时间:2017-08-14 17:02:47

标签: 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)?)

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

你已经完成了大部分工作。缺少的部分是词尾锚\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,{{1}}也会与标签和换行符相匹配。