Javascript 正则表达式从长字符串中提取两项

Javascript 正则表达式从长字符串中提取两项,javascript,java,regex,linux,Javascript,Java,Regex,Linux,有些字符串的格式如下: {abc=1234457, cde=3, label=3352-4e9a-9022-1067ca63} <chve> abc? 123.456.789, http=appl.com 试试:abc=(\d*)*?label=([^}]*) 解释 abc=文字匹配 (\d*)捕捉一些数字 *?惰性匹配 label=literal匹配 ([^}]*)抓住所有不是右括号的东西 以下是我的想法: \{abc=(\d+).*label=(.+)\}.* 在\

有些字符串的格式如下:

{abc=1234457, cde=3,  label=3352-4e9a-9022-1067ca63} <chve>  abc?  123.456.789, http=appl.com 
试试:
abc=(\d*)*?label=([^}]*)

解释
  • abc=
    文字匹配
  • (\d*)
    捕捉一些数字
  • *?
    惰性匹配
  • label=
    literal匹配
  • ([^}]*)
    抓住所有不是右括号的东西

    • 以下是我的想法:

      \{abc=(\d+).*label=(.+)\}.*
      
      \{abc=([\d]*)、label=(.*)(.*)中有两个问题

      • 使用
        abc=([\d]*),
        ,您正在查找
        abc=([\d]*)
        ,后跟文本
        。您应该改用
        *
        。由于
        *
        是默认值,因此它将不匹配
        标签
      • 通过使用
        label=(.*)(.*)
        ,第一个
        *
        捕获所有剩余的文本。您只想捕获大括号边缘之前的文本,因此请使用
        (.*).*

      免责声明:使用基于Java的regex测试仪制作。如果JavaScript正则表达式中的任何内容会使其无效,请随时发表评论。

      您可以通过以下方式进行操作:

      var row = '{abc=1234457, cde=3,  label=3352-4e9a-9022-1067ca63} <chve>  abc?  123.456.789, http=appl.com';
      
      var headerPatternResult = /{abc=([0-9]+),.*?label=([a-z0-9\-]+)}/.exec(row);
      
      if (headerPatternResult !== null) {
          var abc = headerPatternResult[1];
          var label = headerPatternResult[2];
      
          console.log('abc: ' + abc);
          console.log('label: ' + label);
      }
      
      var row='{abc=1234457,cde=3,label=3352-4e9a-9022-1067ca63}abc?123.456.789,http=appl.com';
      var headerPatternResult=/{abc=([0-9]+),*?label=([a-z0-9\-]+)}/.exec(行);
      if(headerPatternResult!==null){
      var abc=headerPatternResult[1];
      var label=headerPatternResult[2];
      console.log('abc:'+abc);
      console.log('label:'+label);
      }
      
      var row = '{abc=1234457, cde=3,  label=3352-4e9a-9022-1067ca63} <chve>  abc?  123.456.789, http=appl.com';
      
      var headerPatternResult = /{abc=([0-9]+),.*?label=([a-z0-9\-]+)}/.exec(row);
      
      if (headerPatternResult !== null) {
          var abc = headerPatternResult[1];
          var label = headerPatternResult[2];
      
          console.log('abc: ' + abc);
          console.log('label: ' + label);
      }