網上看的正則,代沒有找到正解,
自己也在學正則,就當練習下,
取值為:取這些html元素中td中的值。
按著我剛學的思路取值應為匹配到td後,然後得到裡面的值元素。
在這裡不得不說正則絕對是個好東西,乙個* ? + .都代表著特牛x的定義,學著靈活應用真是不容易呀。
裡面也有解說也有高手分析,代本人試了,沒通。所以我就看了上面高手的分析後,自己動手試了一把,在此謝謝 " 上海鳳凰"這們網友的幫助
asdgd1以上的字元將其合名為 a,asdgd1
asdgd1
asdgd1
在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...