正则表达式匹配父模式
本文关键字:模式 正则表达式 | 更新日期: 2023-09-27 18:37:07
我有这个字符串:
string result = "User operation: <#user#> Computer: <#computername#> Description: <#TemplateDescription(<#user#>)#>"
我需要正则表达式模式来查找此标签列表(仅限父标签!
<#user#>
<#computername#>
<#TemplateDescription(<#user#>)#>
我目前正在使用以下正则表达式:
List<string> loTags = Regex.Matches(result, "<#(.*?)#>")
.Cast<Match>()
.Select(loTag => string.Format("<#{0}#>",
loTag.Groups[1].Value))
.ToList();
结果是这样的:
<#user#>
<#computername#>
<#TemplateDescription(<#user#>
如何修改正则表达式?
你来了,
@"<#((?:<#.*?#>|(?!<#|#>).)*)#>"
演示
<#.*?#>
匹配所有<# #>
块。如果出现除此以外的任何字符,则使用 |
OR 运算符旁边的模式。在我们的例子中,它是 (?!<#|#>).
,它匹配任何字符,但不匹配<#
或#>
将正则表达式更改为"<#(.*?)#>([)](#>))?"
以匹配和检索可选的右括号以及末尾的所需模式。
演示