我看过很多不同的帖子,但我还是遇到了一些问题。
我需要删除多个特定标记之间的值,而不要触及具有相似名称的其他标记。例如,删除“LastName”的值,但不删除“Last”的值。
这是我的示例测试字符串
<jv:FirstName>TEST</jv:FirstName>
<jv:MiddleInitial>TEST</jv:MiddleInitial>
<jv:LastName>TEST</jv:LastName>
<jv:EmployerName>TEST</jv:EmployerName>
<jv:LocationName>TEST</jv:LocationName>
<jv:CallerName>TEST</jv:CallerName>
<jv:Last>TEST</jv:Last>
我只想删除FirstName,LastName和MiddleInitial的值。
这是我目前的正则表达式模式:
Regex.Replace(str, @"<(jv:[FirstName|MiddleInitial|LastName].*>).*?</\1, "<$1</$1");
此模式有效,但它也会提取“LocationName”和“Last”标签。
有没有办法只提取特定字符串?
答案 0 :(得分:1)
只需使用括号而不是大括号。
Regex.Replace(str, @"<(jv:(?:FirstName|MiddleInitial|LastName)>).*?</\1, "<$1</$1");
大括号表示匹配其中的任何字符一次。括号匹配整个字符串。