如果最后存在,则通过删除模式来提取正则表达式

regex to extract by be removing a pattern if present at the end

我正在尝试从包含“- E1/E2”的字段中提取值并忽略其余部分。

我用过(?<value>.*)\s+-\s+E[1-3]*,但如果不包含E1/E2,它不会提取。

低于示例值。它不适用于 2,4 样本数据。无法理解如何将 E1/E2 设为可选。

  1. 你好 - 我在 - E1
  2. 公斤
  3. 你好吗 - E3
  4. 简单 - E1 - 开发
  5. 另一个简单的 - E2 QA

您可以使用

^(?<value>.*?)(?:\s+(?:-\s+)?E[1-3].*)?$

参见regex demo

详情

  • ^ - 字符串开头
  • (?<value>.*?) - 组“值”:除换行字符外的零个或多个字符尽可能少
  • (?:\s+(?:-\s+)?E[1-3].*)? - 可选的非捕获组:
    • \s+ - 一个或多个空格
    • (?:-\s+)? - - 和一个或多个空格
    • 的可选序列
    • E[1-3] - E 和从 13
    • 的数字
    • .* - 零个或多个除换行字符外的字符尽可能多
  • $ - 字符串结尾。