正则表达式匹配动态模式
本文关键字:模式 动态 正则表达式 | 更新日期: 2023-09-27 17:50:12
我有一个字符串,我需要使用Regex(或Match)解析:
SomeTextHereThatIWantToIgnore: <First Month.104.yyyy-mm-dd> <Last Day.2.yyyy-mm-dd>" OR SomeTextHereThatIWantToIgnore: "<BadVerb.104>"
可能有一个、两个或三个字符串(都在一行上)我想要解析。在每种情况下,我都想获取"<"answers">"之间的所有内容。
那么,在第一个例子中,我想要获取"first Month.104"。和"最后一天"。在第二个例子中,我想要获取"BadVerb.104"。
有任何正则表达式大师可以告诉我如何做到这一点吗?
获取尖括号内文本而不捕获括号的基本正则表达式是
(?<=<)[^>]+(?=>)
使用Regex.Matches
获取匹配项
var matches = Regex.Matches(str, @"(?<=<)[^>]+(?=>)");
Try: <['s'S]*>
['s' s]捕获任何空白字符或任何非空白字符,因此它们将捕获<
和>
之间的任何内容。
看到
您可以使用以下命令(对于多行匹配使用s
修饰符):
(?s)(?<=<).*?(?=>)
看到演示
谢谢stribizhev,我不知道火柴的收藏。最后我做了一个简单的模式:
[<]([^>]+)
也就是说,查找"<",然后获取所有不是">"的内容。火柴集就是我要找的。我迭代了Match集合,并能够进一步解析结果字符串并得到我想要的结果。
感谢Sami, Karthik和Walker(这个看起来也很简单)。