在正则表达式之间标识字符串的问题

时间:2019-04-29 19:17:17

标签: c#

我正在尝试获取正则表达式的符号之间的字符串,但似乎在文本框中什么都找不到

var ph = txtCodigo.Text;
     foreach(Match m in 
         Regex.Matches(ph,@"${(.*?)}$",RegexOptions.IgnoreCase))
     {
         lstParams.Items.Add(m.Groups[1].ToString());
     }

我希望字符串在符号$ {} $之间,但实际输出为空

1 个答案:

答案 0 :(得分:0)

$是正则表达式中的特殊符号,与其他地方的特殊符号一样,必须转义\$。为了在标签内获取某些内容,但排除标签,我们在正则表达式中使用了lookaround表达式。

Regex rx = "(?<=\$\{).+?(?=\}\$)"

说明

(?<=查找并排除起始符号,在这种情况下为${。技术名称为positive lookbehind

.+?查找任意数量的字符(特殊字符,空格或其他字符)

(?=查找并排除结束符号,在这种情况下为}$。技术名称为positive lookahead

Example on Regexr在Regexr上测试您的正则表达式,它将为您节省很多麻烦