如何使用正则表达式捕获字符串

时间:2021-06-16 06:45:14

标签: regex

我当前的正则表达式查询是

    (?P<TestName>(?<=_)[^\s]+)

它能够捕获“ABCD”和“Adjust_Path”。我还想从下面的列表中捕获字符串“LED”

    4039_ABCD
    LED
    2020_Adjust_Path

2 个答案:

答案 0 :(得分:0)

(?<=_)[^\s]+)|((?!.*_)[^\s]+)

| : 对于 2 个案例(替代方案)

(?!.*_) : 第二种情况:不是每个字符串都带有 _

更多信息

Regular expression with if condition

答案 1 :(得分:0)

您可以在左边断言一个下划线,并匹配除空白字符或下划线以外的任何字符,直到字符串的末尾。

(?P<TestName>(?<=_)\S+|[^\s_]+)$

模式匹配:

  • (?P<TestName> 命名组 TestName
    • (?<=_) 正向后视,直接向左断言 _
    • \S+ 匹配 1+ 次非空白字符
    • |
    • [^\s_]+ 匹配除 _ 或空白字符以外的任何字符 1+ 次
  • ) 关闭群组 TestName
  • $ 字符串结束

看到一个 regex demo

如果下划线前必须有一个数字:

(?P<TestName>(?<=\d_)\S+|[^\s_]+)$