首页 > 解决方案 > 如何拆分第一次出现的字符

问题描述

我有这行:

POS_17=78n(18n,100n)n
WOS<8s(4s,5s)s=Pos:D4 Facebook F:5/8 Rack

我对这个正则表达式有如下问题:

^\s*([^_]+)(_\w+)?([<>=])(.*)\s*$

如果在同一行中有 = 或 < 或 >,则问题是这些字符中的最后一个出现 < > =。我的问题在第二行。你可以检查一下https://regex101.com/r/PDACQl/1

预期结果 :

**For First line :**
POS_17=78n(18n,100n)n

Group 1.    POS
Group 2.    _17
Group 3.    =
Group 4.    78n(18n,100n)n

**For second line :**
WOS<8s(4s,5s)s=Pos:D4 Facebook F:5/8 Rack

Group 1.    WOS
Group 3.    <
Group 4.    8s(4s,5s)s=Pos:D4 Facebook F:5/8 Rack

标签: regex

解决方案


您可以将字符 < > 和 = 添加到第一个否定字符类以不匹配它们。

您可以省略\s*最后的 ,因为它是可选的,而不是最后一个捕获组的一部分。

^\s*([^_<>=]+)(_\w+)?([<>=])(.*)$
        ^^^

正则表达式演示


推荐阅读