【问题标题】:Regex to match XML elements in a text file [duplicate]正则表达式匹配文本文件中的 XML 元素 [重复]
【发布时间】:2012-10-28 07:15:44
【问题描述】:

可能重复:
RegEx match open tags except XHTML self-contained tags

我有一个包含转换指令模板的文本文件。 我需要解析这个文本文件,

我需要匹配这样的东西:

(Source: <element>)

并获得“元素”。

或者这个模式:

(Source: <element attr="name" value=""/>)

并得到“element attr="name"”。

我目前正在使用这个正则表达式:

\(Source:\ ?\<(.*?)\>\)

对不起,我是新手。 :)

感谢您的所有帮助。

-JRC

【问题讨论】:

  • 你的正则表达式有什么问题?它没有按预期运行吗?
  • 是的,它获取了 中的所有文本,这是我不想要的,

标签: c# .net xml regex


【解决方案1】:

试试这个Regex 来检测" 字符的属性:

\(Source:\s+<(\w+\s+(?:\w+=[\"”][^\"”]+[\"”])?)[^>]*>\)

和你的代码:

var result = Regex.Match(strInput, 
                         "\\(Source:\\s+<(\\w+\\s+(?:\\w+=[\"”][^\"”]+[\"”])?)[^>]*>")
                  .Groups[1].Value;

解释:

(subexpression) 捕获匹配的子表达式并为其分配一个从零开始的序数。

? 匹配前一个元素零次或一次。

\w 匹配任何单词字符。

+ 匹配前一个元素一次或多次。

【讨论】:

  • 这很好,但它只获取元素名称,如果元素有属性我也想提取第一个属性。
  • 我更新了我的答案。只需将组编入索引 1
  • 它只提取元素名称:((我正在使用Expresso尝试正则表达式huhu
  • 我在 .NET 应用程序中测试了我的代码!我正在使用radsoftware RegexDesigner
  • 例如你有一个字符串 = (来源:)....我想得到这个--> Property FormalName="Country",你的正则表达式只提取“Property”
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-20
  • 2018-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多