• 5181阅读
  • 20回复

[提问]求正则表达式 [复制链接]

上一主题 下一主题
离线newedition
 
只看楼主 倒序阅读 楼主  发表于: 2012-08-02
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
<bg src="Img/111.png" x="0" y="0">
     <img src="Img/9.png" x="50" y="50"></img>
     <text size="30" bold="true" family="Courier" color="#FF00FF" x="50" y="60">菜单1</text>
     <img src="Img/10.png" x="300" y="50"></img>
     <text size="30" bold="true" family="黑体" color="#888888" x="300" y="60">菜单2</text>
     <img src="Img/11.png" x="500" y="50"></img>
     <text size="30" bold="" family="宋体" color="#00FA9A" x="500" y="60">菜单3</text>
</bg>

一段XML文件代码,我想截取<bg 。。。。</bg>这一段,求高手给一句正则表达式,谢谢了!!!
离线newedition
只看该作者 1楼 发表于: 2012-08-02
<bg([^>]*)>([^^]*?)</bg>
<img([^>]*)>([^^]*?)</img>
<text([^>]*)>([^^]*?)</text>

我自己写好了
离线newedition
只看该作者 2楼 发表于: 2012-08-02
回 2楼(呆呆很呆) 的帖子
哥,讲解下 我写的和你写的区别在哪吧?
离线呆呆很呆
只看该作者 3楼 发表于: 2012-08-02
回 2楼(newedition) 的帖子
话说你写的看不懂
<bg(.|/n)+</bg>
就是.表示任何字符,/n表示换行,(.|/n)就是任何字符,+就是一直匹配,我也不知道对不对啊,蒙的
离线newedition
只看该作者 4楼 发表于: 2012-08-02
回 3楼(呆呆很呆) 的帖子
嗯嗯,刚才验证了下。

<img([^>]*)>([^^]*?)</img>
这句会输出
<img src="Img/9.png" x="50" y="50"></img>
<img src="Img/10.png" x="300" y="50"></img>
<img src="Img/11.png" x="500" y="50"></img>

用你的方法<img(.|/n)+</img>
会输出
<img src="Img/9.png" x="50" y="50"></img>
     <text size="30" bold="true" family="Courier" color="#FF00FF" x="50" y="60">菜单1</text>
     <img src="Img/10.png" x="300" y="50"></img>
     <text size="30" bold="true" family="黑体" color="#888888" x="300" y="60">菜单2</text>
     <img src="Img/11.png" x="500" y="50"></img>
离线呆呆很呆
只看该作者 5楼 发表于: 2012-08-02
回 4楼(newedition) 的帖子
<img(.|/n)+?</img>这样应该行吧
离线newedition
只看该作者 6楼 发表于: 2012-08-02
回 5楼(呆呆很呆) 的帖子
高手,还是你的方法简单
离线newedition
只看该作者 7楼 发表于: 2012-08-02
回 5楼(呆呆很呆) 的帖子
太感谢了
离线newedition
只看该作者 8楼 发表于: 2012-08-02
回 5楼(呆呆很呆) 的帖子
再问个问题哈  

我想要获取<img src="" x="500" y="50"></img>中Img/11.png 这个,正则怎么写呢?
离线newedition
只看该作者 9楼 发表于: 2012-08-02
回 5楼(呆呆很呆) 的帖子
<img src="Img/11.png" x="500" y="50"></img>
获取src的值 Img/11.png   这个正则怎么写呢?
离线呆呆很呆
只看该作者 10楼 发表于: 2012-08-02
回 8楼(newedition) 的帖子
“<img src="" x="500" y="50"></img>中Img/11.png”哪有啊,好矛盾
离线呆呆很呆
只看该作者 11楼 发表于: 2012-08-02
Re:回 5楼(呆呆很呆) 的帖子
引用第9楼newedition于2012-08-02 15:14发表的 回 5楼(呆呆很呆) 的帖子 :
<img src="Img/11.png" x="500" y="50"></img>
获取src的值 Img/11.png   这个正则怎么写呢?


其实这样还不如用Qt的XML模块,你觉得那?
正则用匹配不获取和匹配获取吧
离线newedition
只看该作者 12楼 发表于: 2012-08-02
回 11楼(呆呆很呆) 的帖子
没用过你说的,只想到用正则获取图片的路径,再绘图
离线呆呆很呆
只看该作者 13楼 发表于: 2012-08-02
回 12楼(newedition) 的帖子
你确不确定src一定是第一个?
用正则表达式把
<img.+?src=\"(.+)\" .+?></img>
替换为
\\1


离线呆呆很呆
只看该作者 14楼 发表于: 2012-08-02
不确定的情况下
离线newedition
只看该作者 15楼 发表于: 2012-08-02
回 13楼(呆呆很呆) 的帖子
谢谢你,我再自己研究下
离线呆呆很呆
只看该作者 16楼 发表于: 2012-08-02
回 15楼(newedition) 的帖子
对了,那个\"和\\是在C++中的规则,不是正则表达式的规则
离线newedition
只看该作者 17楼 发表于: 2012-08-03
回 16楼(呆呆很呆) 的帖子
你好,还在不?

这个正则又有新问题了,在正则验证软件里测试,返回结果正常。

<img(.|/n)+?</img> 这句会返回

<img src="Img/9.png" x="50" y="50"></img>
    <text size="30" bold="true" family="Courier" color="#FF00FF" x="50" y="60">菜单1</text>
    <img src="Img/10.png" x="300" y="50"></img>
    <text size="30" bold="true" family="黑体" color="#888888" x="300" y="60">菜单2</text>
    <img src="Img/11.png" x="500" y="50"></img>


离线newedition
只看该作者 18楼 发表于: 2012-08-03
回 16楼(呆呆很呆) 的帖子
<img([^>]*)>

这句只返回第一个<img src="Img/9.png" x="50" y="50">

我想获取这样的结果
<img src="Img/9.png" x="50" y="50"></img>
<img src="Img/10.png" x="300" y="50"></img>
<img src="Img/11.png" x="500" y="50"></img>


有啥好办法没?
离线jdwx

只看该作者 19楼 发表于: 2012-08-03
回 18楼(newedition) 的帖子
不用正则。
可以用基本的查找功能
QString str = “逐行读入的XML”
if (str.indexOf("/img") != 0)
{
就得到了需要的那行。
}这个办法没有适应性,就是用于某类一样结构的文件。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线newedition
只看该作者 20楼 发表于: 2012-08-03
回 19楼(jdwx) 的帖子
这个方法可能不行,我把XML文件读成一个QTextStream,保存成QString格式赋值给一个方法中,在这个方法里绘图上,返回一个QImage

快速回复
限100 字节
 
上一个 下一个