我有一个包含大量垃圾数据的文件,我想从中提取一些正确格式化的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>
还有其他方法可以编写该正则表达式吗?
答案 0 :(得分:0)
只要没有属性值包含序列“/&gt;”,这就应该有效。
string FW_VERSION = Regex.Match(result,
"<GET_FW_VERSION.*/>|<GET_FW_VERSION.*>.*</GET_FW_VERSION>",
RegexOptions.Singleline).ToString();
答案 1 :(得分:0)
请注意,正则表达式中的.
表示:
的
之外的任何单个字符.
强> 的 通配符:匹配除\n
尝试使用此正则表达式:
(?:<GET_FW_VERSION[^>]*>|<GET_FW_VERSION[^>]*>.*</GET_FW_VERSION>)
的解释:
<强>
|
强> 匹配由竖线|
字符分隔的任何一个元素。的
[^character_group]
强> 的 否定:匹配character_group
以内的任何单个字符。的
(?:subexpression)
强> 的 定义一个非捕获组。