如果最后存在,则通过删除模式来提取正则表达式
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 设为可选。
- 你好 - 我在 - E1
- 公斤
- 你好吗 - E3
- 酷
- 简单 - E1 - 开发
- 另一个简单的 - E2 QA
您可以使用
^(?<value>.*?)(?:\s+(?:-\s+)?E[1-3].*)?$
参见regex demo。
详情
^
- 字符串开头
(?<value>.*?)
- 组“值”:除换行字符外的零个或多个字符尽可能少
(?:\s+(?:-\s+)?E[1-3].*)?
- 可选的非捕获组:
\s+
- 一个或多个空格
(?:-\s+)?
- -
和一个或多个空格 的可选序列
E[1-3]
- E
和从 1
到 3
的数字
.*
- 零个或多个除换行字符外的字符尽可能多
$
- 字符串结尾。
我正在尝试从包含“- E1/E2”的字段中提取值并忽略其余部分。
我用过(?<value>.*)\s+-\s+E[1-3]*
,但如果不包含E1/E2,它不会提取。
低于示例值。它不适用于 2,4 样本数据。无法理解如何将 E1/E2 设为可选。
- 你好 - 我在 - E1
- 公斤
- 你好吗 - E3
- 酷
- 简单 - E1 - 开发
- 另一个简单的 - E2 QA
您可以使用
^(?<value>.*?)(?:\s+(?:-\s+)?E[1-3].*)?$
参见regex demo。
详情
^
- 字符串开头(?<value>.*?)
- 组“值”:除换行字符外的零个或多个字符尽可能少(?:\s+(?:-\s+)?E[1-3].*)?
- 可选的非捕获组:\s+
- 一个或多个空格(?:-\s+)?
--
和一个或多个空格 的可选序列
E[1-3]
-E
和从1
到3
的数字
.*
- 零个或多个除换行字符外的字符尽可能多
$
- 字符串结尾。