日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

html前台检验特殊字符正则,【Qt编程】html特殊字符及正则表达式

發布時間:2024/8/23 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html前台检验特殊字符正则,【Qt编程】html特殊字符及正则表达式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、html特殊字符的顯示

我們知道html語言和C語言一樣也有一些特殊字符,它們是不能正常顯示的,必須經過轉義,在網上可以查到如何顯示這些字符,如下圖所示:

上圖給了最常用的特殊字符的顯示,下面我們來實驗一下:

首先在記事本中寫入一句:

<font color=blue>程序例font>#include<stdio.h>

然后就文本后綴名改為.html后

,用瀏覽器打開,顯示如下:

我們從上圖可以發現include后面沒有顯示,但是當我們在文本中寫入:

<font color=blue>程序例font>#include<stdio.h>

<font color=blue>程序例font>#include<stdio.h>

時就能正常顯示了。顯示結果如下圖:

我們知道Qt能夠支持html語言,但是我在編寫可以查詢c語言函數(肯定有#include后面<>的特殊字符的顯示問題)的時候發現使用上面的方法仍然不能顯示特殊字符,后來靈機一動,就決定?用全角<>來代替半角<>?。這樣就不會當成是特殊字符了,就可以正常顯示了。半角和全角的轉換只需要點擊下圖中的第3個按鈕:

雖然說,使用全角后看起來不是很協調,但還看得過去,如果讀者有什么好的方法,請不吝賜教。

2、正則表達式

接著上面的問題繼續說,比如我有一個C語言函數詞典庫,我取其中一段來舉例:

<font color=blue>程序例font>:<br>#include <span style="color:#ff0000;"><</span>stdio.h <span style="color:#ff0000;">>span><br>#include <span style="color:#ff0000;"><</span> stdlib.h <span style="color:#ff0000;">>span><br>int main(void)<br>

因為我們需要將上述半角的<>轉換為全角的<>,并且?只是替換處于頭文件的半角<>?,?即字符串中為紅色的部分?。當然當文件比較小的時候,可以手動查找替換,但是由于詞典一半都有十幾M,這時就必須使用正則表達式了。

在Qt中,使用了QRegExp來支持正則表達式。關于正則表達式的語法,網上都有很多教程,我就不細說了。從上面的實例字符串的內容,我們知道包含了幾個頭文件,所以我們在匹配時,要分別匹配各個頭文件兩邊的半角<>,?即我們要使用非貪婪模式,否則就會從第一個頭文件的。我們知道,在正則表達式中,非貪婪模式是由'?'來指定的,但是對于QRegExp類來說,?是不合法的。?在QRegExp中,要使用setMinimal函數來指定貪婪模式?。?setMinimal(true)就是非貪婪模式,setMinimal(false)就是貪婪模式。

通過上面兩部分的講解,就可以完成C語言函數庫詞典的顯示了。下面通過代碼實現,新建Qt

Gui應用程序,選擇基類為QWidget,其中只需要修改widget.cpp里的內容即可(需要在widget.ui界面中,添加兩個label,分別命名為label和label1)。

widget.cpp文件:

#include "widget.h"

#include "ui_widget.h"

#include<QString>

#include<QRegExp>

#include<QDebug>

#include<QLabel>

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

QString str="<font color=blue>程序例font>:<br>#include <stdio.h ><br>#include < stdlib.h ><br>int main(void)<br>";

ui->label->setText(str); //由于Qt也能識別html格式,而< >是html的特殊字符,因此不處理的話,就會出現顯示出錯

QRegExp rx("#include (<(.*.h )>)");//正則表達式里的括號是為了獲取匹配的內容

rx.setMinimal(true);//非貪婪模式

int pos=0;//從字符串的開始部分

for(int i=0;i<str.size();i++) {

pos=rx.indexIn(str,0);//得到匹配字符串的位置

while(pos!=-1)//匹配成功

{

str.replace(rx.cap(1),"<"+rx.cap(2)+">");//這里是進行替換,如果不明白rx.cap是什么,可以qDebug顯示內容

pos=rx.indexIn(str,pos+rx.matchedLength());//從當前位置,繼續往后進行匹配

}

}

ui->label1->setText(str);

}

Widget::~Widget()

{

delete ui;

}

程序運行結果如下:

下面放一張查單詞軟件用到的特殊字符顯示和使用正則表達式后的截圖:

總結

以上是生活随笔為你收集整理的html前台检验特殊字符正则,【Qt编程】html特殊字符及正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。