javascript多个正则表达式匹配

javascript多个正则表达式匹配,javascript,regex,Javascript,Regex,考虑到下面的字符串 [NeMo(产品)]10.10.100.100(EFA-B-3)[Brocade FC开关]传感器: 电源#1(SNMP自定义表)关闭(无此名称(SNMP错误# 2) ) 我尝试获取多个匹配项以提取以下值: var system = "PROD"; var ip = "10.10.100.100"; var location = "EFA-B-3"; var device = "Brocade FC-Switch"; var sensor = "Sensor: Power S

考虑到下面的字符串

[NeMo(产品)]10.10.100.100(EFA-B-3)[Brocade FC开关]传感器: 电源#1(SNMP自定义表)关闭(无此名称(SNMP错误# 2) )

我尝试获取多个匹配项以提取以下值:

var system = "PROD";
var ip = "10.10.100.100";
var location = "EFA-B-3";
var device = "Brocade FC-Switch";
var sensor = "Sensor: Power Supply #1";
var sensorArt = "SNMP Custom Table";
var sensorState = "Down";
var errorMsg = "No Such Name (SNMP error # 2)";
由于我是正则表达式的初学者,我试图定义一些“规则”:

  • 提取第一个圆括号内的第一个值,例如PROD
  • 提取第一个闭合方括号和 第二个开口圆括号,例如10.10.100.100
  • 提取第二个圆括号内的值,例如EFA-B-3
  • 提取第二个方括号内的值,例如Brocade FC交换机
  • 提取第二个闭合方括号和 第三个开口圆形支架,例如传感器:电源#1
  • 提取第三轮括号内给定的值,例如SNMP 自定义表格
  • 提取第三个闭合圆括号和 第四个开口圆括号,例如向下
  • 提取第四个圆括号内的值,例如无此类名称 (SNMP错误#2)
  • 利用这个网页,我试图达到我的目标。 到目前为止,我成功地构建了正则表达式

    (?=([^)]+))


    这是我的第一场比赛(规则1)。不知何故,我没有声明正则表达式可以在括号之间查看。我遗漏了什么?

    由于无法定义分隔符,唯一的方法是匹配部件并分别捕获它们

    /\(([^()]+)\)]\s*(.*?)\s*\(([^()]*)\)\s*\[([^\][]*)]\s*(.*?)\s*\(([^()]+)\)\s*(.*?)\s*\((.*)\)/
    

    详细信息

    • \(
      -a
      字符
    • ([^()]+)
      -第1组:除
    • \)]\s*
      -
      )]
      和0+空格
    • (.*)
      -第2组:除换行符以外的任何0+字符,尽可能少
    • \s*\(
      -0+空格,
    • ([^()]*)
      -第3组:除
      以外的1个或多个字符
    • \)\s*\[
      -
      ,0+空格,
      [
    • ([^\][]*)
      -第4组:除
      [
      ]
    • ]\s*
      -
      ]
      和0+空格
    • (.*)
      -第5组:除换行符以外的任何0+字符,尽可能少
    • \s*\(
      -0+空格,
    • ([^()]+)
      -第6组:除
      以外的一个或多个字符
    • \)\s*
      -
      和0+空格
    • (.*)
      -第7组:除换行符以外的任何0+字符,尽可能少
    • \s*\(
      -0+空格和
    • (.*)
      -第8组:除换行符以外的任何0+字符,尽可能多
    • \)
      -
      char
    ES6+代码段:

    var s=“[NeMo(PROD)]10.10.100.100(EFA-B-3)[Brocade FC Switch]传感器:电源#1(SNMP自定义表)关闭(无此名称(SNMP错误#2));
    让[\uU,系统,ip,位置1,设备,传感器,sensorArt,sensorState,errorMsg]=s.match(/\([^()]+)]\s*(.*)\s*([^()]*)\([^()]*)\s*[([^\]]]*)\s*([^()]+)\([^()]+)\)\s*(.*)\s*(.*)\s*(*)/;
    
    console.log(`System=${System}\nIP=${ip}\nLocation=${location1}\nDevice=${device}\nSensor=${sensor}\nSensorArt=${sensorArt}\nSensorState=${sensorState}\nErrorMsg=${errorMsg}')
    让[\uU,系统,ip,位置,设备,传感器,sensorArt,sensorState,errorMsg]=s.match(/\([^()]+)]\s*(.*)\s*([^()]*)\s*[([^\][*])\s*([^()]+)\s*([^()]+)\s*(.*)\s*(.*)\s*(.*)/)