0

我有一个包含大量垃圾数据的文件,我想从中提取一些格式正确的 XML。

我想提取的一点是:

<random stuff....;'/>
<GET_FW_VERSION
   FIRMWARE_VERSION = "1.77"
   FIRMWARE_DATE = "Apr 23 2009"
   MANAGEMENT_PROCESSOR = "iLO2"
   LICENSE_TYPE = "iLO 2 Advanced"
    />
more non xml stuff

所以我只想取出<GET_FW_VERSION>

我曾经这样做过:

string FW_VERSION = Regex.Match(result, "<GET_FW_VERSION>.*</GET_FW_VERSION>", RegexOptions.Singleline).ToString();

但这并没有结束</GET_FW_VERSION>

还有另一种方法来编写该正则表达式吗?

4

2 回答 2

0

只要没有任何属性值包含序列“/>”,这应该可以工作。

string FW_VERSION = Regex.Match(result, 
   "<GET_FW_VERSION.*/>|<GET_FW_VERSION.*>.*</GET_FW_VERSION>", 
   RegexOptions.Singleline).ToString();
于 2013-01-10T02:26:47.500 回答
0

请注意,.在正则表达式中意味着:

. 通配符:匹配任何单个字符,除了\n

尝试使用这个正则表达式:

(?:<GET_FW_VERSION[^>]*>|<GET_FW_VERSION[^>]*>.*</GET_FW_VERSION>)

解释:

| 匹配由竖线|字符分隔的任何一个元素。

[^character_group] 否定:匹配任何不在character_group.

(?:subexpression) 定义一个非捕获组。

于 2013-01-10T06:16:38.240 回答