从非xml格式提取xml数据

从非xml格式提取xml数据,xml,regex,Xml,Regex,我有一个包含大量垃圾数据的文件,我想从中提取一些正确格式的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

我有一个包含大量垃圾数据的文件,我想从中提取一些正确格式的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

只要属性值中没有一个包含序列“/>”,该操作就应该有效

string FW_VERSION=Regex.Match(结果,
"|.*", 
RegexOptions.Singleline).ToString();

注意,regex中的
表示:

通配符:匹配除
\n

尝试使用此正则表达式:

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

|
匹配由垂直条
|
字符分隔的任何一个元素

[^character\u group]
否定:匹配不在
字符组中的任何单个字符

(?:子表达式)
定义非捕获组


当使用
RegexOptions.SingleLine
时,
也匹配
\n
string FW_VERSION = Regex.Match(result, 
   "<GET_FW_VERSION.*/>|<GET_FW_VERSION.*>.*</GET_FW_VERSION>", 
   RegexOptions.Singleline).ToString();
(?:<GET_FW_VERSION[^>]*>|<GET_FW_VERSION[^>]*>.*</GET_FW_VERSION>)