【问题标题】:Regex to find space before a month name or abbreviation正则表达式查找月份名称或缩写之前的空格
【发布时间】:2017-08-14 17:02:47
【问题描述】:

在 Powershell 脚本中,我正在尝试编写一个正则表达式来查找月份名称或缩写之前的空格(例如一月、一月、二月、二月等)。我正在使用它来驱动 -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)?)

提前感谢您的帮助。

【问题讨论】:

  • 可能需要转义空格:[\ ]
  • 您需要定义一个月后可能发生的事情,例如\s\W\b

标签: regex powershell


【解决方案1】:

你已经做对了。缺少的部分是词尾锚\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,后者也匹配制表符和换行符。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2019-06-01
    相关资源
    最近更新 更多