在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)?)
提前感谢您的帮助。
答案 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)
注意:这也会将[ ]
替换为\s
,{{1}}也会与标签和换行符相匹配。