正则表达式,用于检查给定输入文本中的空值

时间:2013-05-23 09:51:03

标签: regex

以下是我用作输入的数据

TEXT = "*** This is for test \"ABC_DEF/ghi_JKL\"U 1234 5678\nThis is also for test\n\nTEST\n\nDEMO TEST\n\nDEM             ABC                      DEF                      GHI\nCASE-0     192.168.1.0   192.168.1.1     192.168.1.2\n\nJKL          MNO               PQR           STU\n             111                                              222\nEND\n-TestCase(HIP)=MAXPAYNE3\n-GameType(RPG)=SERIOUS SAM3\n"

我到目前为止的代码如下:

if(match($NV_SPECIFIC_PROBLEM, "CP AP COMMUNICATION FAULT")) {
  de= extract($TEXT, ".*DEF.*?\n\s*(\S+)\s+")
  a = extract($TEXT, ".*DEF.*?\n\s*\S+\s+(\S+)\s+")
  d = extract($TEXT, ".*DEF.*?\n\s*\S+\s+\S+\s+(\S+)\s+")
  g = extract($TEXT, ".*DEF.*?\n\s*\S+\s+\S+\s+\S+\s+(\S+)\s*")

  j = extract($TEXT, ".*STU\n\s*(\S+)\s+")
  m = extract($TEXT, ".*STU\n\s*\S+\s+(\S+)\s+")
  p = extract($TEXT, ".*STU\n\s*\S+\s+\S+\s+(\S+)\s+")
  s = extract($TEXT, ".*STU\n\s*\S+\s+\S+\s+\S+\s+(\S+)\s*")

  $OUTPUT = "DEM=" + $de + " ABC=" + $a + " DEF=" + $d + " GHI=" + $g + ", JKL=" + $j + ", MNO= " + m + ", PQR=" + p + ", STU=" + $s 
  update(@OUTPUT)
}

此代码提供此输出:

DEM=CASE-0, ABC=192.168.1.0, DEF=192.168.1.1, GHI=192.168.1.2, JKL=, MNO=111, PQR=, STU=222

但我想要输出如下:

DEM=CASE-0, ABC=192.168.1.0, DEF=192.168.1.1, GHI=192.168.1.2, MNO=111, STU=222

1 个答案:

答案 0 :(得分:3)

你的问题在这里:

$OUTPUT = "DEM=" + $de + " ABC=" + $a + " DEF=" + $d + " GHI=" + $g + ", JKL=" + $j + ", MNO= " + m + ", PQR=" + p + ", STU=" + $s

您自动放置所有名称并插入值。这个:j = extract($TEXT, ".*STU\n\s*(\S+)\s+")显然会返回null或空。仅当JKL=不为空时,才应添加j。 我建议检查值是否为空,然后将其添加到输出中。