我正在尝试从包含“- 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
-
.*
- 尽可能多的除换行符以外的零个或多个字符
-
-
$
- 字符串结束。
关于如果最后存在,则通过删除模式来提取正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68231817/