Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 格式属性的正则表达式=值_Regex_Pcre - Fatal编程技术网

Regex 格式属性的正则表达式=值

Regex 格式属性的正则表达式=值,regex,pcre,Regex,Pcre,我需要构建一个正则表达式来匹配这两种类型的行: 1) SBNID=304,MENAME=RV0714,MEID=122,CELLID=4,CELLNAME=LRV0714D 2) MBTS_ACN1_RJ/ETHPORT:机柜号=0,子架号=0,插槽号=7,端口号=0,子板类型=基板 输出必须是: 第一(1)项: SBNID,MENAME,MEID,CELLID,CELLNAME 第二(2)项: 机柜号、子架号、插槽号、端口号、子板类型 我已经试过了:= 适用于第二种情况,但对于第一种情况,它不

我需要构建一个正则表达式来匹配这两种类型的行: 1) SBNID=304,MENAME=RV0714,MEID=122,CELLID=4,CELLNAME=LRV0714D

2) MBTS_ACN1_RJ/ETHPORT:机柜号=0,子架号=0,插槽号=7,端口号=0,子板类型=基板

输出必须是: 第一(1)项: SBNID,MENAME,MEID,CELLID,CELLNAME

第二(2)项: 机柜号、子架号、插槽号、端口号、子板类型

我已经试过了:=

适用于第二种情况,但对于第一种情况,它不返回SBNID


我使用的是pcre(php)regex

您可以在第一个字符类中添加一个字符串开头替代项,并通过使用
[^=]
否定字符类来增强捕获组:

(?:^|[:,])([^=]*)=
看。最后,如果可能缺少
=
,则可以将其从模式中删除

详细信息

  • (?:^ |[:,])
    -字符串的开头或
    ,或
    (注意它等于
    (?)
  • ([^=]*)
    -第1组:除
    =
    以外的任何0+字符,尽可能多
  • =
    -一个
    =
    符号(可以删除)

如果您实现了所有建议,您可能会得到。

您可以在第一个字符类中添加字符串开头替代项,并通过使用
[^=]
否定字符类增强捕获组:

(?:^|[:,])([^=]*)=
请参阅。最后,如果模式中缺少
=
,则可能会将其从模式中删除

详细信息

  • (?:^ |[:,])
    -字符串的开头或
    ,或
    (注意它等于
    (?)
  • ([^=]*)
    -第1组:除
    =
    以外的任何0+字符,尽可能多
  • =
    -一个
    =
    符号(可以删除)

如果您实现了所有建议,您可能会得到。

(?:^ |[:,])\s*([^=]*)=
而不在属性上留空格,或者,因为它是PCRE,
(?:^ |[:,])\s*\K[^=]+
很抱歉,它不起作用,因为如果我把所有的例子放在一起,它就起作用了,但是在我的代码中,每个输入都是按时间处理的,所以正则表达式没有solve@user3806586请解释您的输入是什么样子的。“按时间处理”是什么意思=
在属性上没有前导空格,或者,因为它是PCRE,
(?:^ |[:,])\s*\K[^=]+
很抱歉,它不起作用,因为如果我把所有的示例放在一起,它就起作用了,但是在我的代码中,每个输入都是按时间处理的,所以正则表达式没有solve@user3806586请解释你的输入是什么样子的。你说的“按时间处理”是什么意思。