如何用第一次出现的字符进行分割

问题描述 投票:0回答:1

我有这行字,其中:

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

我有一个问题,这个regex如下。

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

问题是如果在同一行中有=或<或>,它将取最后一个出现的字符之一 < > = .我的问题在第二行。你可以检查一下 https:/regex101.comrPDACQl1

预期结果 :

**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
1个回答
1
投票

你可以在第一个被否定的字符类中添加< > 和 =这几个字符,使其不匹配。

你可以省略掉"<>="(.*/s*$)。\s* 因为它是可选的,不属于最后一个捕获组。

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

注册表演示


1
投票
^\s*([^\W_]+)(_\d+)?([<=>])(.*\S)\s*$

请看 https:/regex101.comrPDACQl2

© www.soinside.com 2019 - 2024. All rights reserved.