我有一个字符串如下:
<String>VariableText</String>
我需要一个正则表达式来识别节点内的“VariableText”值。
正如文本所暗示的,该值可能是可变的。
使用正则表达式如何实现这一点?
好吧,有两种常见的正则表达式模式可以得到明确界定的“东西”:
/%PatternForOpeningDelimiter%(.+?)%PatternForClosingDelimiter%/
...或者,在你的情况下:
/<String>(.+?)<\/String>/
内容将存储在$1
变量中。
/(?<=%PatternForOpeningDelimiter%).+?(?=%PatternForClosingDelimiter%)/
...或者,在你的情况下:
/(?<=<String>).+?(?=<\/String>)/
此模式将涵盖“所需内容”,无需使用正则表达式变量($1
,$2
等)
不过,意识到可变长度模式(例如(?<=\d+)
,例如 )可以用作 .NET 正则表达式风格中的后视表达式(感谢 @Alan Moore 的有益观察),但还有许多其他的缺少此功能(或部分支持)。
我认为这种模式可以做你想做的事
string pattern = "$<[s|S]tring>\w*</[s|S]tring>^";
Regex r= new Regex(pattern);