正規表示式。取Html中Table中的Td裡面的值

2022-01-31 16:43:42 字數 2775 閱讀 9239

網上看的正則,代沒有找到正解,

自己也在學正則,就當練習下,

取值為:取這些html元素中td中的值。

按著我剛學的思路取值應為匹配到td後,然後得到裡面的值元素。

在這裡不得不說正則絕對是個好東西,乙個* ? + .都代表著特牛x的定義,學著靈活應用真是不容易呀。

裡面也有解說也有高手分析,代本人試了,沒通。所以我就看了上面高手的分析後,自己動手試了一把,在此謝謝 " 上海鳳凰"這們網友的幫助

asdgd1 

asdgd1

asdgd1

asdgd1

以上的字元將其合名為 a,

在c#後台裡面,我將 雙引號變為了單引號,便於變理的儲存,然後不替換也行,將其轉換為 \"這種模式;

下面為各種情況的解決方法:

在寫正則的時候前面加上 @ 轉義做用。

1:<[^>]+>([^<>]+)<[^>]+>  ^是中括號中,是非的應用,第乙個中括號指,不是》的字元的多個字元集合,因為後面有+號的存在;其後的幾個是同理。

2:([^<>]+) 這種用法,我覺的,會更快直接的找到範圍匹配區域,在這裡.*只要不是\n的字元,會匹配到》結束的位置,中間的([^<>]+)是匹配不是<>字元的字元集合,然後以結束。

對於以上的取值而言,因為中間全用了()來標明中間值區域,這意思是分組的用意,所以在reg.math(a).groups[i].value 來取值,記住 以分組來取的值可指定下標。

以上為單一的值取,而不是集合。

matchcollection 為所取的集合,從而迴圈取出,

用法其實一樣,寫法很多種不一一說明了,

在這裡說乙個用法,].*?>(?[^<>]+) 大家可以看出紅色標識塊,它的做用是方便取值時候,定義的乙個分組名稱,從下面的表中也可看出來。

寫的匹配有很多,大家可以試一下。

成員名稱

說明none

指定不設定選項。

ignorecase

指定不區分大小寫的匹配。

multiline

多行模式。更改 ^ 和 $ 的含義,使它們分別在任意一行的行首和行尾匹配,而不僅僅在整個字串的開頭和結尾匹配。

explicitcapture

指定有效的捕獲僅為形式為 (?...) 的顯式命名或編號的組。這使未命名的圓括號可以充當非捕獲組,並且不會使表示式的語法 (?:...) 顯得笨拙。

compiled

指定將正規表示式編譯為程式集。這會產生更快的執行速度,但會增加啟動時間。在呼叫 compiletoassembly 方法時,不應將此值分配給 options 屬性。

singleline

指定單行模式。更改點 (.) 的含義,使它與每乙個字元匹配(而不是與除 \n 之外的每個字元匹配)。

ignorepatternwhitespace

消除模式中的非轉義空白並啟用由 # 標記的注釋。但是,ignorepatternwhitespace 值不會影響或消除字元類中的空白。

righttoleft

指定搜尋從右向左而不是從左向右進行。

ecmascript

為表示式啟用符合 ecmascript 的行為。該值只能與 ignorecase、multiline 和compiled 值一起使用。該值與其他任何值一起使用均將導致異常。

cultureinvariant

指定忽略語言中的區域性差異。有關更多資訊,請參見 在 regularexpressions 命名空間中執行不區分區域性的操作。

regex reg1 = new regex(@"<[^>]+>([^<>]+)<[^>]+>", regexoptions.ignorecase);//此用於取乙個時,不是集合時應用。

string str = reg1.match(a).groups[1].value;

regex reg12 = new regex(@"([^<>]+)", regexoptions.ignorecase);

string str1 = reg12.match(a).groups[1].value;

matchcollection match = regex.matches(a, @"].*?>(?[^<>]+)", regexoptions.compiled);

matchcollection match2 = regex.matches(a, @"<[^>]+>(?[^<>]+)<[^>]+>", regexoptions.compiled ); //success

matchcollection match3 = regex.matches(a, @"(?[^<>]+)", regexoptions.compiled | regexoptions.ignorecase | regexoptions.explicitcapture);

matchcollection match4 = regex.matches(a, @"]+>(?[^<>]+)", regexoptions.compiled);

string a1 = "你們好哇ffff

你們好哇

"; matchcollection match5 = regex.matches(a1, @"(?[^<>]+)", regexoptions.compiled | regexoptions.ignorecase | regexoptions.explicitcapture);

foreach (match m in match5)

以上東西有網上的,有看過自己寫的

本人在學習,有那鏈結,人接受不了,請通知,立刻刪除。

轉截的時候請注上本人**

3q

HTML 正規表示式

表示式概念 一種字串檢索模式 表現為字串形式的object物件 可進行文字搜尋和替換。在前端頁面中一般用於表單驗證 語法 正則字面量表達方式 正規表示式主體 修飾符 可選 var reg abc i 實際開發中正規表示式會配合字串的search和replace方法來使用 search 用於檢索與正規...

正規表示式相關 正規表示式處理html內容

前面關於顯示html文字用了瀏覽器控制項來處理 這個不過是為了解決燃眉之急不得已才使用。其實最好還是使用正規表示式處理,也就是自己寫乙個html文字直譯器,當然這個實現起來也是不容易的,首先你得將所有html文字標籤羅列出來,然後一一翻譯。下面先搞乙個簡單的例子吧。public static str...

常用HTML正規表示式

常用html正規表示式 1.只能輸入數字和英文的 2.只能輸入數字的 3.只能輸入全形的 4.只能輸入漢字的 var regu 0 9a za z 0 9a za z 0 9a za z 0 9a za z a za z0 9 a za z net net com com gov gov mil m...