首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于正则表达式的难题,该如何处理

2012-05-12 
关于正则表达式的难题我的前台页面如下:asp:TextBox IDTextBox1 runatserverStylez-index: 697

关于正则表达式的难题
我的前台页面如下:
  <asp:TextBox ID="TextBox1" runat="server" Style="z-index: 697; left: 134px; position: absolute; top: 726px"/>
  <asp:TextBox ID="TextBox2" runat="server" Style="z-index: 697; left: 135px; position: absolute; top: 726px"/>
  <asp:TextBox ID="TextBox3" runat="server" Style="z-index: 697; left: 132px; position: absolute; top: 726px"/>

我想从前台之文本之中,用正则取得ID:TextBox2它的"left:"属性的值
比如ID:TextBox2的left: 135px,我想从中取得"135",然后把它替换成取它值,应该怎么写正则呢.


之前我的写法如下:
string strPre = @"(?<=<asp:.*?ID=""TextBox2"".*?Style="".*?left:\s{0,1})" + @"(\d*)(?=px.*?"".*?>)";
  content = Regex.Replace(content, strPre, new MatchEvaluator(CorrectString), RegexOptions.IgnoreCase);

 private string CorrectString(Match match)
  {
  string matchValue = match.Value;
  string strDirection = comboBox1.SelectedItem.ToString();
  if (matchValue.Length > 0)
  {
  if (strDirection == "下" || strDirection == "右")
  {
  matchValue = Convert.ToString(int.Parse(matchValue) + int.Parse(textBox1.Text.Trim()));
  }
  else
  {
  matchValue = Convert.ToString(int.Parse(matchValue) - int.Parse(textBox1.Text.Trim()));
  }
  }
  return matchValue;
  }

但不仅会取到TextBox2的值,还会把TextBox3的值也取出来,明明有加非贪婪符"?",怎么表现出来的还是贪婪的呢?


[解决办法]

C# code
string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("GB2312"));//读取txt                string pattern = @"(?i)(?<=<asp:TextBox[^>]*?ID=(['""]?)TextBox2(['""]?)[^>]*?Style=(['""]?)[^'""]*?left:\s*?)\d+";                string result = Regex.Replace(tempStr, pattern,"200");
[解决办法]
Regex reg = new Regex(@"(?is)(?<=<asp[^>]*?TextBox2[^>]*?left:.?)[\d]+(?=px)");
[解决办法]
探讨

引用:
我的前台页面如下:
<asp:TextBox ID="TextBox1" runat="server" Style="z-index: 697; left: 134px; position: absolute; top: 726px"/>
<asp:TextBox ID="TextBox2" runat="server" Style="z-index: 697; le……

热点排行