求一个正则表达式

Ly105 2009-11-18 04:38:15
一个XML文件
.............
<Top>1pt</Top>
<Left>10pt</Left>
<Height>12pt</Height>
<Width>3in</Width>
<Value>=Globals!PageNumber + ' of ' + User!TotalPages</Value>
<Style>
<FontSize>10pt</FontSize>
<FontWeight>Normal</FontWeight>
<BorderStyle />
<BorderColor />
<BorderWidth />
</Style>
.......................

我将其读入string中,想用正则表达式找到
<Value>=Globals!PageNumber + ' of ' + User!TotalPages</Value>
<Value></Value>中间
"="开始,可能存在 "+",可能有"(",")",可能有 "'" 可能有空白字符。

求正则表达式怎么写?

...全文
92 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangxiao2008 2009-11-18
  • 打赏
  • 举报
回复
\ <Value\>.*\ </Value\> 这个就行
然后用replace把你不要的<value> </value>去掉
wuhq030710914 2009-11-18
  • 打赏
  • 举报
回复
(?<=<Value>)[^<>]+(?=</Value>)

另:标准xml不用考虑正则了吧
mbh0210 2009-11-18
  • 打赏
  • 举报
回复
这个貌似是报表文件,估计楼主想替换参数,也是reporting service?
如果是这个是xml操作最好,因为格式都是固定的,你能直接到参数的列表
liherun 2009-11-18
  • 打赏
  • 举报
回复
那个捕获组 /1的
liherun 2009-11-18
  • 打赏
  • 举报
回复
不可以用正则直接判断吗?
十八道胡同 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liherun 的回复:]
怎么限制里面必须有一个!
[/Quote]
可以对提取出来的数据在进行验证
借用5楼的
if (m.Groups[0].ToString().indexof('!')!=-1)
正确输出
else
不正确
波导终结者 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ly105 的回复:]
引用 6 楼 alifriend 的回复:
^\ <Value\>.*\ </Value\>


这个 找不出来 <Value>=Globals!PageNumber + ' of ' + User!TotalPages </Value>
[/Quote]
从CSDN复制出来的中间会多空格,你把空格去了
Ly105 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 alifriend 的回复:]
^\ <Value\>.*\ </Value\>
[/Quote]

这个 找不出来<Value>=Globals!PageNumber + ' of ' + User!TotalPages </Value>
Ly105 2009-11-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jiangshun 的回复:]
C# codestring str=@"<Top>1pt </Top>
<Left>10pt </Left>
<Height>12pt </Height>
<Width>3in </Width>
<Value>=Globals!PageNumber + ' of ' + User!TotalPages </Value>
<Style>
<FontSize>10pt </FontSize>
<FontWeight>Normal </FontWeight>
<BorderStyle />
<BorderColor />
<BorderWidth />
</Style>";

Regex reg=new Regex(@"(?is)(?<=<Value>\=).*?!+.*?(?=</Value>)");
MatchCollection mc= reg.Matches(str);foreach (Match min mc)
{
Console.WriteLine(m.Groups[0].ToString());
}/*
------输出结果------------
Globals!PageNumber + ' of ' + User!TotalPages*/
[/Quote]

<Value>=Parameters!param2.Value</Value>

找不到
liherun 2009-11-18
  • 打赏
  • 举报
回复
怎么限制里面必须有一个!
波导终结者 2009-11-18
  • 打赏
  • 举报
回复
^\<Value\>.*\</Value\>
jiangshun 2009-11-18
  • 打赏
  • 举报
回复
            string str = @"<Top>1pt </Top>
<Left>10pt </Left>
<Height>12pt </Height>
<Width>3in </Width>
<Value>=Globals!PageNumber + ' of ' + User!TotalPages </Value>
<Style>
<FontSize>10pt </FontSize>
<FontWeight>Normal </FontWeight>
<BorderStyle />
<BorderColor />
<BorderWidth />
</Style> ";

Regex reg = new Regex(@"(?is)(?<=<Value>\=).*?!+.*?(?=</Value>)");
MatchCollection mc = reg.Matches(str);


foreach (Match m in mc)
{
Console.WriteLine(m.Groups[0].ToString());
}

/*
------输出结果------------
Globals!PageNumber + ' of ' + User!TotalPages

*/
liherun 2009-11-18
  • 打赏
  • 举报
回复
to 独孤求败
弄个正则
mbh0210 2009-11-18
  • 打赏
  • 举报
回复
使用xpath岂不更加好
liherun 2009-11-18
  • 打赏
  • 举报
回复
你就这一个<Value> </Value>中间 有等号?
Ly105 2009-11-18
  • 打赏
  • 举报
回复
还必须有至少一个感叹号

110,524

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧