<span style="background-color:#ffffff; font-family:'Times New Roman'; font-size:6.67pt; vertical-align:super">1</span>
怎么用那个正则表达式拿到 包含这个vertical-align:super 这个属性的 super 和 数字 1
其中1 可能不一样的 如: 2 ,s,4,m 等什么的 属性也要拿到 super 也可能不一样的
随便用什么方式 只要拿到这个属性值 和 值 就行
//取 supper 内容 string verticalText=Regex.Replace(text,@"<(?<t>\w+).*?style=\".*?(vertical-align:(\w+)(?=[;|\"])).*?\">.*?</\k<t>>","$2"); // 取标签内内容: 1、2、s 什么的 string numberOrstr=Regex.Replace(text,@"<(?<t>\w+).*?>(.*?)</\k<t>>","$1");
前面一个拿到了,后面那个拿不到啊 (那个我提取的html为字符串了,好长的) , $0也拿不到那个html 所以后面的东西拿不到啊
@月下诗: 你要指定标签的吗? 我给你那个是取任意标签的文本:123, 如<a>123</a>, <div>123</div>,<span>123</span>
@Yu: 上面那个只是可以提取supper而已啊 ,我还要里面的1 什么的 拿不到 ,可不可以 把该字符串<span id="test" style="background-color:#ffffff; font-family:'Times New Roman'; font-size:6.67pt; vertical-align:super">1</span>也拿到 ,
@月下诗: 我提供给你的正则都可以拿到你想要的数据
@Yu: 关键是在程序里拿不到啊,用那个什么软件是可以的,程序里面全部的html都变成了$0了,后面的就拿不到了啊
@月下诗: html都变成了$0?
代码贴出来吧
@Yu: 我单步运行了,没有拿到那个最外面的
@月下诗: 不能设置为$0的 没有这个参数
如果你想要取 <span>...</span>
<(?<t>span).*?>(.*?)</\k<t>>
@Yu: 这样也拿不到啊,拿到的是全部了的
@月下诗: superOrSub 不是你要拿的吗? (你所说的:其中1 可能不一样的 如: 2 ,s,4,m 等什么的)
@Yu: 是啊 但是<(?<t>span).*?>(.*?)</\k<t>> 拿到了全部的span了啊,我要替换外面的那个啊,要加什么上标下标什么的,那个不替换的话,后面就灭有意义了
@月下诗: 外面的那个,是什么?
@Yu: <span id="test" style="background-color:#ffffff; font-family:'Times New Roman'; font-size:6.67pt; vertical-align:super">1</span> 这个标签 span可能不一样
@月下诗:
如果是这达不到你要的,那你要说明一下的需求,具体点
还有最好,你先理解一下 正则的意义, 这样你会很好写的
@Yu:把这个标签 <span id="test" style="background-color:#ffffff; font-family:'Times New Roman'; font-size:6.67pt; vertical-align:super">1</span> 里面的数字(1)1是要提取出来处理的,然后 在把这个标签替换成<span id="test" style="background-color:#ffffff; font-family:'Times New Roman'; font-size:6.67pt; vertical-align:super">1</span> 【 (处理过后的1)】
@月下诗:
Regex.Replace(spanHtml,@"(<(?<t>\w+).*?style=\".*?(vertical-align:(\w+)(?=[;|\"])).*?\">).*?(</\k<t>>)","$1"+supperOrSub+"$4");
@Yu: 把这个标签 <span id="test" style="background-color:#ffffff; font-family:'Times New Roman'; font-size:6.67pt; vertical-align:super">1</span> 里面的数字(1)1是要提取出来处理的,然后 在把这个标签<span id="test" style="background-color:#ffffff; font-family:'Times New Roman'; font-size:6.67pt; vertical-align:super">1</span>替换成 【 (处理过后的1)】 那个 还要super 来判断
@Yu: 高手,讲话啊
@月下诗: 你不是已经用 verticalText 在判断了吗
@Yu:就是这个拿不到嘛 <span id="test" style="background-color:#ffffff; font-family:'Times New Roman'; font-size:6.67pt; vertical-align:super">1</span>
@月下诗: 可以的
消化一下表达式吧
@Yu: 高手在不在啊 ,那个正则模糊匹配了 怎么回事?
@月下诗: 最后个*后面加个?
@Yu: 还是一样啊 中间的很多的span 都匹配了啊
@月下诗:
把 源文本和表达式贴出来
@Yu:就是一个html文件 (html文件上传不了) 去里面包含 vertical-align 这个属性的标签 如:<span id="test" style="background-color:#ffffff; font-family:'Times New Roman'; font-size:6.67pt; vertical-align:super">1</span>这个文件
@月下诗:
表达式呢?
@Yu: <(?<HtmlTag>[\w]+)[^>]*\sstyle=(?<Quote>[""']?).*?vertical-align:super(?(Quote)\k<Quote>)[""']?[^>]*>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*?</\k<HtmlTag>>
@月下诗:
<(?<HtmlTag>[\w]+)[^>]*\sstyle=(?<Quote>[""']?).*?(vertical-align:super)?(?(Quote)\k<Quote>)[""']?[^>]*>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*?</\k<HtmlTag>>
@Yu:
如果要只匹配有 vertical-align:super 的 span, 就用下面这个
<(?<HtmlTag>[\w]+)[^>]*\sstyle=(?<Quote>[""']?)[^>]*vertical-align:super(?(Quote)\k<Quote>)[""']?[^>]*>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*?</\k<HtmlTag>>
@Yu: 谢谢啦,高手!!!昨天很忙,没有时间结贴了
1、下载个 jQuery 引用到页面
你那个给个ID(class也行)
<span id="test" style="background-color:#ffffff; font-family:'Times New Roman'; font-size:6.67pt; vertical-align:super">1</span>
$("#test").css("vertical-align") 就是你要的super
2、用js
document.getElementById("test").style.verticalAlign
就是你要的super
那个我提取了整个的html 了,我要判断里面的某些东西
不用正则不行吗?
$("span").innerHTML() 可以拿到 1
$("span").css("vertical-align") 可以拿到 super
那个东西已经提取为字符串了,要是前台的话,我知道怎么拿的
@月下诗: 这个。。。你请教二楼估计有戏