包含在,C#中的字符串的正则表达式
我试图通过使用以下正则表达式将所有字符串包含在中:
Regex regex = new Regex(@"\<(?\S+)\>", RegexOptions.IgnoreCase); string name = e.Match.Groups["name"].Value;
但在某些情况下,我有这样的文字:
它返回两个字符串而不是四个字符串,即高于Regex输出
//as one string and //as second string
我在哪里期待四个字符串:
你能否指导我对我的正则表达式做出哪些改变?
我尝试添加’\ b’来指定单词边界
new Regex(@"\b\<(?\S+)\>\b", RegexOptions.IgnoreCase);
,但这没有帮助。
通过使用正则表达式/<([^>]*)>/
您将获得所需的大部分内容。 (无需转义尖括号,因为尖括号在大多数正则表达式引擎中都不是特殊字符,包括.NET引擎。)我提供的正则表达式还将捕获尾随空格和标记上的任何属性 – 可靠地解析这些内容是方式,超出合理正则表达式的范围。
但是,请注意,如果您尝试使用正则表达式解析XML / HTML, 那就是疯狂
正则表达式是解析XML的错误工具。 尝试使用System.Xml.Linq
( XElement
)API。
你的正则表达式使用\ S +作为通配符。 在英语中,这是“一系列一个或多个字符,其中没有一个是非空格”。 换句话说,当正则表达式<(?
应用于此字符串:’`时,正则表达式将匹配整个字符串。 尖括号是非空格。
我想你想要的是“一系列一个或多个角色,其中没有一个是尖括号”。
正则表达式是<(?
。
啊,正则表达式。 设计看起来像卡通咒骂的语言。