我当前的正则表达式查询是
(?P<TestName>(?<=_)[^\s]+)
它能够捕获“ABCD”和“Adjust_Path”。我还想从下面的列表中捕获字符串“LED”
4039_ABCD
LED
2020_Adjust_Path
答案 0 :(得分:0)
(?<=_)[^\s]+)|((?!.*_)[^\s]+)
| : 对于 2 个案例(替代方案)
(?!.*_) : 第二种情况:不是每个字符串都带有 _
更多信息
答案 1 :(得分:0)
您可以在左边断言一个下划线,并匹配除空白字符或下划线以外的任何字符,直到字符串的末尾。
(?P<TestName>(?<=_)\S+|[^\s_]+)$
模式匹配:
(?P<TestName>
命名组 TestName
(?<=_)
正向后视,直接向左断言 _
\S+
匹配 1+ 次非空白字符|
或[^\s_]+
匹配除 _
或空白字符以外的任何字符 1+ 次)
关闭群组 TestName
$
字符串结束看到一个 regex demo。
如果下划线前必须有一个数字:
(?P<TestName>(?<=\d_)\S+|[^\s_]+)$