在 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)
注意:这也将 [ ]
替换为 \s
,它也匹配制表符和换行符。
关于正则表达式在月份名称或缩写之前查找空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45679481/