成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java 正則表達(dá)式詳解

Achilles / 1520人閱讀

摘要:正則表達(dá)式可以用于搜索編輯和操作文本。模式分組后會(huì)在正則表達(dá)式中創(chuàng)建反向引用。使正則忽略大小寫。注意方法不支持正則表達(dá)式。第三步,通過(guò)匹配對(duì)象,根據(jù)正則表達(dá)式操作字符串。正則表達(dá)式匹配數(shù)字范圍時(shí),首先要確定最大值與最小值,最后寫中間值。

版權(quán)聲明:本文由吳仙杰創(chuàng)作整理,轉(zhuǎn)載請(qǐng)注明出處:https://segmentfault.com/a/1190000009162306
1. 正則表達(dá)式 1.1 什么是正則表達(dá)式

正則表達(dá)式
: 定義一個(gè)搜索模式的字符串。

正則表達(dá)式可以用于搜索、編輯和操作文本。

正則對(duì)文本的分析或修改過(guò)程為:首先正則表達(dá)式應(yīng)用的是文本字符串(text/string),它會(huì)以定義的模式從左到右匹配文本,每個(gè)源字符只匹配一次。

1.2 示例
正則表達(dá)式 匹配
this is text 精確匹配字符串 "this is text"
thiss+iss+text 匹配單詞 "this" 后跟一個(gè)或多個(gè)空格字符,后跟詞 "is" 后跟一個(gè)或多個(gè)空格字符,后跟詞 "text"
^d+(.d+)? ^ 定義模式必須匹配字符串的開始,d+ 匹配一個(gè)或多個(gè)數(shù)字,? 表明小括號(hào)內(nèi)的語(yǔ)句是可選的,. 匹配 ".",小括號(hào)表示分組。例如匹配:"5"、"1.5" 和 "2.21"
2. 正則表達(dá)式的編寫規(guī)則 2.1 常見匹配符號(hào)
正則表達(dá)式 描述
. 匹配所有單個(gè)字符,除了換行符(Linux 中換行是 ,Windows 中換行是
^regex 正則必須匹配字符串開頭
regex$ 正則必須匹配字符串結(jié)尾
[abc] 復(fù)選集定義,匹配字母 a 或 b 或 c
[abc][vz] 復(fù)選集定義,匹配字母 a 或 b 或 c,后面跟著 v 或 z
[^abc] 當(dāng)插入符 ^ 在中括號(hào)中以第一個(gè)字符開始顯示,則表示否定模式。此模式匹配所有字符,除了 a 或 b 或 c
[a-d1-7] 范圍匹配,匹配字母 a 到 d 和數(shù)字從 1 到 7 之間,但不匹配 d1
XZ 匹配 X 后直接跟著 Z
X|Z 匹配 X 或 Z
2.2 元字符

元字符是一個(gè)預(yù)定義的字符。

正則表達(dá)式 描述
d 匹配一個(gè)數(shù)字,是 [0-9] 的簡(jiǎn)寫
D 匹配一個(gè)非數(shù)字,是 [^0-9] 的簡(jiǎn)寫
s 匹配一個(gè)空格,是 [ x0b f] 的簡(jiǎn)寫
S 匹配一個(gè)非空格
w 匹配一個(gè)單詞字符(大小寫字母、數(shù)字、下劃線),是 [a-zA-Z_0-9] 的簡(jiǎn)寫
W 匹配一個(gè)非單詞字符(除了大小寫字母、數(shù)字、下劃線之外的字符),等同于 [^w]
2.3 限定符

限定符定義了一個(gè)元素可以發(fā)生的頻率。

正則表達(dá)式 描述 舉例
* 匹配 >=0 個(gè),是 {0,} 的簡(jiǎn)寫 X* 表示匹配零個(gè)或多個(gè)字母 X,.* 表示匹配任何字符串
+ 匹配 >=1 個(gè),是 {1,} 的簡(jiǎn)寫 X+ 表示匹配一個(gè)或多個(gè)字母 X
? 匹配 1 個(gè)或 0 個(gè),是 {0,1} 的簡(jiǎn)寫 X? 表示匹配 0 個(gè)或 1 個(gè)字母 X
{X} 只匹配 X 個(gè)字符 d{3} 表示匹配 3 個(gè)數(shù)字,.{10} 表示匹配任何長(zhǎng)度是 10 的字符串
{X,Y} 匹配 >=X 且 <=Y 個(gè) d{1,4} 表示匹配至少 1 個(gè)最多 4 個(gè)數(shù)字
*? 如果 ? 是限定符 *+?{} 后面的第一個(gè)字符,那么表示非貪婪模式(盡可能少的匹配字符),而不是默認(rèn)的貪婪模式
2.4 分組和反向引用

小括號(hào) () 可以達(dá)到對(duì)正則表達(dá)式進(jìn)行分組的效果。

模式分組后會(huì)在正則表達(dá)式中創(chuàng)建反向引用。反向引用會(huì)保存匹配模式分組的字符串片斷,這使得我們可以獲取并使用這個(gè)字符串片斷。

在以正則表達(dá)式替換字符串的語(yǔ)法中,是通過(guò) $ 來(lái)引用分組的反向引用,$0 是匹配完整模式的字符串(注意在 JavaScript 中是用 $& 表示);$1 是第一個(gè)分組的反向引用;$2 是第二個(gè)分組的反向引用,以此類推。

示例:

package com.wuxianjiezh.demo.regex;

public class RegexTest {

    public static void main(String[] args) {
        // 去除單詞與 , 和 . 之間的空格
        String Str = "Hello , World .";
        String pattern = "(w)(s+)([.,])";
        // $0 匹配 `(w)(s+)([.,])` 結(jié)果為 `o空格,` 和 `d空格.`
        // $1 匹配 `(w)` 結(jié)果為 `o` 和 `d`
        // $2 匹配 `(s+)` 結(jié)果為 `空格` 和 `空格`
        // $3 匹配 `([.,])` 結(jié)果為 `,` 和 `.`
        System.out.println(Str.replaceAll(pattern, "$1$3")); // Hello, World.
    }
}

上面的例子中,我們使用了 [.] 來(lái)匹配普通字符 . 而不需要使用 [.]。因?yàn)檎齽t對(duì)于 [] 中的 .,會(huì)自動(dòng)處理為 [.],即普通字符 . 進(jìn)行匹配。

2.4.1 僅分組但無(wú)反向引用

當(dāng)我們?cè)谛±ㄌ?hào) () 內(nèi)的模式開頭加入 ?:,那么表示這個(gè)模式僅分組,但不創(chuàng)建反向引用。

示例:

package com.wuxianjiezh.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args) {
        String str = "img.jpg";
        // 分組且創(chuàng)建反向引用
        Pattern pattern = Pattern.compile("(jpg|png)");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
            System.out.println(matcher.group(1));
        }
    }
}

運(yùn)行結(jié)果:

jpg
jpg

若源碼改為:

package com.wuxianjiezh.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args) {
        String str = "img.jpg";
        // 分組但不創(chuàng)建反向引用
        Pattern pattern = Pattern.compile("(?:jpg|png)");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
            System.out.println(matcher.group(1));
        }
    }
}

運(yùn)行結(jié)果:

jpg
Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 1
    at java.util.regex.Matcher.group(Matcher.java:538)
    at com.wuxianjiezh.regex.RegexTest.main(RegexTest.java:15)
2.4.2 分組的反向引用副本

Java 中可以在小括號(hào)中使用 ? 將小括號(hào)中匹配的內(nèi)容保存為一個(gè)名字為 name 的副本。

示例:

package com.wuxianjiezh.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args) {
        String str = "@wxj 你好啊";
        Pattern pattern = Pattern.compile("@(?w+s)"); // 保存一個(gè)副本
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
            System.out.println(matcher.group(1));
            System.out.println(matcher.group("first"));
        }
    }
}

運(yùn)行結(jié)果:

@wxj 
wxj 
wxj 
2.5 否定先行斷言(Negative lookahead)

我們可以創(chuàng)建否定先行斷言模式的匹配,即某個(gè)字符串后面不包含另一個(gè)字符串的匹配模式。

否定先行斷言模式通過(guò) (?!pattern) 定義。比如,我們匹配后面不是跟著 "b" 的 "a":

a(?!b)
2.6 指定正則表達(dá)式的模式

可以在正則的開頭指定模式修飾符。

(?i) 使正則忽略大小寫。

(?s) 表示單行模式("single line mode")使正則的 . 匹配所有字符,包括換行符。

(?m) 表示多行模式("multi-line mode"),使正則的 ^$ 匹配字符串中每行的開始和結(jié)束。

2.7 Java 中的反斜杠

反斜杠 在 Java 中表示轉(zhuǎn)義字符,這意味著 在 Java 擁有預(yù)定義的含義。

這里例舉兩個(gè)特別重要的用法:

在匹配 .{[(?$^* 這些特殊字符時(shí),需要在前面加上 ,比如匹配 . 時(shí),Java 中要寫為 .,但對(duì)于正則表達(dá)式來(lái)說(shuō)就是 .。

在匹配 時(shí),Java 中要寫為 ,但對(duì)于正則表達(dá)式來(lái)說(shuō)就是 。

注意:Java 中的正則表達(dá)式字符串有兩層含義,首先 Java 字符串轉(zhuǎn)義出符合正則表達(dá)式語(yǔ)法的字符串,然后再由轉(zhuǎn)義后的正則表達(dá)式進(jìn)行模式匹配。

2.8 易錯(cuò)點(diǎn)示例

[jpg|png] 代表匹配 jpgpng 中的任意一個(gè)字符。

(jpg|png) 代表匹配 jpgpng。

3. 在字符串中使用正則表達(dá)式 3.1 內(nèi)置的字符串正則處理方法

在 Java 中有四個(gè)內(nèi)置的運(yùn)行正則表達(dá)式的方法,分別是 matches()、split())、replaceFirst()replaceAll()。注意 replace() 方法不支持正則表達(dá)式。

方法 描述
s.matches("regex") 當(dāng)僅且當(dāng)正則匹配整個(gè)字符串時(shí)返回 true
s.split("regex") 按匹配的正則表達(dá)式切片字符串
s.replaceFirst("regex", "replacement") 替換首次匹配的字符串片段
s.replaceAll("regex", "replacement") 替換所有匹配的字符
3.2 示例

示例代碼:

package com.wuxianjiezh.regex;

public class RegexTest {

    public static void main(String[] args) {
        System.out.println("wxj".matches("wxj"));
        System.out.println("----------");

        String[] array = "w x j".split("s");
        for (String item : array) {
            System.out.println(item);
        }
        System.out.println("----------");

        System.out.println("w x j".replaceFirst("s", "-"));
        System.out.println("----------");

        System.out.println("w x j".replaceAll("s", "-"));
    }
}

運(yùn)行結(jié)果:

true
----------
w
x
j
----------
w-x j
----------
w-x-j
4. 模式和匹配

Java 中使用正則表達(dá)式需要用到兩個(gè)類,分別為 java.util.regex.Patternjava.util.regex.Matcher。

第一步,通過(guò)正則表達(dá)式創(chuàng)建模式對(duì)象 Pattern。

第二步,通過(guò)模式對(duì)象 Pattern,根據(jù)指定字符串創(chuàng)建匹配對(duì)象 Matcher。

第三步,通過(guò)匹配對(duì)象 Matcher,根據(jù)正則表達(dá)式操作字符串。

來(lái)個(gè)例子,加深理解:

package com.wuxianjiezh.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args) {
        String text = "Hello Regex!";

        Pattern pattern = Pattern.compile("w+");
        // Java 中忽略大小寫,有兩種寫法:
        // Pattern pattern = Pattern.compile("w+", Pattern.CASE_INSENSITIVE);
        // Pattern pattern = Pattern.compile("(?i)w+"); // 推薦寫法
        Matcher matcher = pattern.matcher(text);
        // 遍例所有匹配的序列
        while (matcher.find()) {
            System.out.print("Start index: " + matcher.start());
            System.out.print(" End index: " + matcher.end() + " ");
            System.out.println(matcher.group());
        }
        // 創(chuàng)建第兩個(gè)模式,將空格替換為 tab
        Pattern replace = Pattern.compile("s+");
        Matcher matcher2 = replace.matcher(text);
        System.out.println(matcher2.replaceAll("	"));
    }
}

運(yùn)行結(jié)果:

Start index: 0 End index: 5 Hello
Start index: 6 End index: 11 Regex
Hello    Regex!
5. 若干個(gè)常用例子 5.1 中文的匹配

[u4e00-u9fa5]+ 代表匹配中文字。

package com.wuxianjiezh.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args) {
        String str = "閑人到人間";
        Pattern pattern = Pattern.compile("[u4e00-u9fa5]+");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

運(yùn)行結(jié)果:

閑人到人間
5.2 數(shù)字范圍的匹配

比如,匹配 1990 到 2017。

注意:這里有個(gè)新手易范的錯(cuò)誤,就是正則 [1990-2017],實(shí)際這個(gè)正則只匹配 01279 中的任一個(gè)字符。

正則表達(dá)式匹配數(shù)字范圍時(shí),首先要確定最大值與最小值,最后寫中間值。

正確的匹配方式:

package com.wuxianjiezh.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args) {
        String str = "1990
2010
2017";
        // 這里應(yīng)用了 (?m) 的多行匹配模式,只為方便我們測(cè)試輸出
        // "^1990$|^199[1-9]$|^20[0-1][0-6]$|^2017$" 為判斷 1990-2017 正確的正則表達(dá)式
        Pattern pattern = Pattern.compile("(?m)^1990$|^199[1-9]$|^20[0-1][0-6]$|^2017$");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}

運(yùn)行結(jié)果:

1990
2010
2017
5.3 img 標(biāo)簽的匹配

比如,獲取圖片文件內(nèi)容,這里我們考慮了一些不規(guī)范的 img 標(biāo)簽寫法:

package com.wuxianjiezh.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args) {
        String str = "" +
                "";
        // 這里我們考慮了一些不規(guī)范的 img 標(biāo)簽寫法,比如:空格、引號(hào)
        Pattern pattern = Pattern.compile("");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group("src"));
        }
    }
}

運(yùn)行結(jié)果:

aaa.jpg
bbb.png
ccc.png
5.4 貪婪與非貪婪模式的匹配

比如,獲取 div 標(biāo)簽中的文本內(nèi)容:

package com.wuxianjiezh.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexTest {

    public static void main(String[] args) {
        String str = "
文章標(biāo)題
發(fā)布時(shí)間
"; // 貪婪模式 Pattern pattern = Pattern.compile("
(?.+)</div>"); Matcher matcher = pattern.matcher(str); while (matcher.find()) { System.out.println(matcher.group("title")); } System.out.println("--------------"); // 非貪婪模式 pattern = Pattern.compile("<div>(?<title>.+?)</div>"); matcher = pattern.matcher(str); while (matcher.find()) { System.out.println(matcher.group("title")); } } }</pre> <p>運(yùn)行結(jié)果:</p> <pre>文章標(biāo)題</div><div>發(fā)布時(shí)間 -------------- 文章標(biāo)題 發(fā)布時(shí)間</pre> <b>6. 推薦兩個(gè)在線正則工具</b> <p>JavaScript、Python 等的在線表達(dá)式工具:https://regex101.com/ </p> <p>Java 在線表達(dá)式工具:http://www.regexplanet.com/advanced/java/index.html </p> <b>7. 參考</b> <p>Java Regex - Tutorial</p> </div> <div id="qoyqs8suu2u" class="mt-64 tags-seach" > <div id="qoyqs8suu2u" class="tags-info"> <a style="width:120px;" title="GPU云服務(wù)器" href="http://systransis.cn/site/product/gpu.html">GPU云服務(wù)器</a> <a style="width:120px;" title="云服務(wù)器" href="http://systransis.cn/site/active/kuaijiesale.html?ytag=seo">云服務(wù)器</a> <a style="width:120px;" title="正則表達(dá)式j(luò)ava" href="http://systransis.cn/yun/tag/zhengzebiaodashijava/">正則表達(dá)式j(luò)ava</a> <a style="width:120px;" title="java正則表達(dá)式教程" href="http://systransis.cn/yun/tag/javazhengzebiaodashijiaocheng/">java正則表達(dá)式教程</a> <a style="width:120px;" title="java js正則表達(dá)式" href="http://systransis.cn/yun/tag/java jszhengzebiaodashi/">java js正則表達(dá)式</a> <a style="width:120px;" title="java正則表達(dá)式t" href="http://systransis.cn/yun/tag/javazhengzebiaodashit/">java正則表達(dá)式t</a> </div> </div> <div id="qoyqs8suu2u" class="entry-copyright mb-30"> <p class="mb-15"> 文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。</p> <p>轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69899.html</p> </div> <ul class="pre-next-page"> <li id="qoyqs8suu2u" class="ellipsis"><a class="hpf" href="http://systransis.cn/yun/69898.html">上一篇:(八)java多線程之Semaphore</a></li> <li id="qoyqs8suu2u" class="ellipsis"><a class="hpf" href="http://systransis.cn/yun/69900.html">下一篇:java根據(jù)模板動(dòng)態(tài)生成PDF</a></li> </ul> </div> <div id="qoyqs8suu2u" class="about_topicone-mid"> <h3 class="top-com-title mb-0"><span data-id="0">相關(guān)文章</span></h3> <ul class="com_white-left-mid atricle-list-box"> <li> <div id="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/yun/87811.html"><b><em>Java</em>script字符串常用方法<em>詳解</em></b></a></h2> <p class="ellipsis2 good">摘要:屬性里的字符串類似于數(shù)組,都是一個(gè)一個(gè)字符拼湊在一起組成的,因此可以用屬性取得字符串的長(zhǎng)度字符串常用的一些方法返回字符串的第個(gè)字符,如果不在之間,則返回一個(gè)空字符串。如果匹配成功,則返回正則表達(dá)式在字符串中首次匹配項(xiàng)的索引否則,返回。 字符串 字符串就是一個(gè)或多個(gè)排列在一起的字符,放在單引號(hào)或雙引號(hào)之中。 abc abc length屬性js里的字符串類似于數(shù)組,都是一個(gè)一個(gè)字...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-952.html"><img src="http://systransis.cn/yun/data/avatar/000/00/09/small_000000952.jpg" alt=""><span id="qoyqs8suu2u" class="layui-hide64">Wildcard</span></a> <time datetime="">2019-08-21 14:08</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/yun/68337.html"><b>后端ing</b></a></h2> <p class="ellipsis2 good">摘要:當(dāng)活動(dòng)線程核心線程非核心線程達(dá)到這個(gè)數(shù)值后,后續(xù)任務(wù)將會(huì)根據(jù)來(lái)進(jìn)行拒絕策略處理。線程池工作原則當(dāng)線程池中線程數(shù)量小于則創(chuàng)建線程,并處理請(qǐng)求。當(dāng)線程池中的數(shù)量等于最大線程數(shù)時(shí)默默丟棄不能執(zhí)行的新加任務(wù),不報(bào)任何異常。 spring-cache使用記錄 spring-cache的使用記錄,坑點(diǎn)記錄以及采用的解決方案 深入分析 java 線程池的實(shí)現(xiàn)原理 在這篇文章中,作者有條不紊的將 ja...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-1389.html"><img src="http://systransis.cn/yun/data/avatar/000/00/13/small_000001389.jpg" alt=""><span id="qoyqs8suu2u" class="layui-hide64">roadtogeek</span></a> <time datetime="">2019-08-15 13:49</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/yun/70539.html"><b><em>java</em><em>正則</em>表式的使用</b></a></h2> <p class="ellipsis2 good">摘要:直接使用正則表達(dá)式對(duì)輸入的字符串進(jìn)行匹配,匹配成功則返回使用正則表示式,進(jìn)行字符串分割進(jìn)行匹配操作,如果匹配成功,這三個(gè)方法都會(huì)返回其中,是在源字符串中找出和正則表達(dá)式匹配的字符串。 概念 正則表達(dá)式 在閱讀本文前,你應(yīng)該已經(jīng)了解了正則表達(dá)式的基本概念以及如何書寫正則表達(dá)式。如果對(duì)正則表達(dá)式不是太了解,或者想更深入地了解正則表示式,請(qǐng)點(diǎn)擊這里。 捕獲組 捕獲組能夠讓我們方便地從正則表達(dá)...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-149.html"><img src="http://systransis.cn/yun/data/avatar/000/00/01/small_000000149.jpg" alt=""><span id="qoyqs8suu2u" class="layui-hide64">zoomdong</span></a> <time datetime="">2019-08-16 10:49</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/yun/88131.html"><b><em>正則</em><em>表<em>達(dá)式</em></em>前端使用手冊(cè)</b></a></h2> <p class="ellipsis2 good">摘要:非貪婪模式盡可能少的匹配所搜索的字符串,而默認(rèn)的貪婪模式則盡可能多的匹配所搜索的字符串。 導(dǎo)讀 你有沒有在搜索文本的時(shí)候絞盡腦汁, 試了一個(gè)又一個(gè)表達(dá)式, 還是不行. 你有沒有在表單驗(yàn)證的時(shí)候, 只是做做樣子(只要不為空就好), 然后燒香拜佛, 虔誠(chéng)祈禱, 千萬(wàn)不要出錯(cuò). 你有沒有在使用sed 和 grep 命令的時(shí)候, 感覺莫名其妙, 明明應(yīng)該支持的元字符, 卻就是匹配不到. 甚至,...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-1241.html"><img src="http://systransis.cn/yun/data/avatar/000/00/12/small_000001241.jpg" alt=""><span id="qoyqs8suu2u" class="layui-hide64">zhoutao</span></a> <time datetime="">2019-08-21 15:12</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> <li> <div id="qoyqs8suu2u" class="atricle-list-right"> <h2 class="ellipsis2"><a class="hpf" href="http://systransis.cn/yun/119616.html"><b>軟件接口測(cè)試工具Jmeter使用核心<em>詳解</em>【建議收藏】</b></a></h2> <p class="ellipsis2 good">用Jmeter做接口測(cè)試只需要掌握幾個(gè)核心功能就可以了。 并不一定要把它所有的功能都掌握,先掌握核心功能入行,然后再根據(jù)工作需要和職業(yè)規(guī)劃來(lái)學(xué)習(xí)更多的內(nèi)容。這篇文章在前面接口測(cè)試框架(測(cè)試計(jì)劃--->線程組--->請(qǐng)求--->查看結(jié)果樹)的前提下,來(lái)介紹必須要掌握的幾個(gè)核心功能,力求用最短的時(shí)間取得最大的成果。 在前面的文章中我提到,用Jmeter做接口測(cè)試的核心是單接口測(cè)試的參數(shù)化和關(guān)聯(lián)接口測(cè)試...</p> <div id="qoyqs8suu2u" class="com_white-left-info"> <div id="qoyqs8suu2u" class="com_white-left-infol"> <a href="http://systransis.cn/yun/u-149.html"><img src="http://systransis.cn/yun/data/avatar/000/00/01/small_000000149.jpg" alt=""><span id="qoyqs8suu2u" class="layui-hide64">zoomdong</span></a> <time datetime="">2021-09-09 09:32</time> <span><i class="fa fa-commenting"></i>評(píng)論0</span> <span><i class="fa fa-star"></i>收藏0</span> </div> </div> </div> </li> </ul> </div> <div id="qoyqs8suu2u" class="topicone-box-wangeditor"> <h3 class="top-com-title mb-64"><span>發(fā)表評(píng)論</span></h3> <div id="qoyqs8suu2u" class="xcp-publish-main flex_box_zd"> <div id="qoyqs8suu2u" class="unlogin-pinglun-box"> <a href="javascript:login()" class="grad">登陸后可評(píng)論</a> </div> </div> </div> <div id="qoyqs8suu2u" class="site-box-content"> <div id="qoyqs8suu2u" class="site-content-title"> <h3 class="top-com-title mb-64"><span>0條評(píng)論</span></h3> </div> <div id="qoyqs8suu2u" class="pages"></ul></div> </div> </div> <div id="qoyqs8suu2u" class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right"> <div id="qoyqs8suu2u" class=""> <div id="qoyqs8suu2u" class="com_layuiright-box user-msgbox"> <a href="http://systransis.cn/yun/u-1617.html"><img src="http://systransis.cn/yun/data/avatar/000/00/16/small_000001617.jpg" alt=""></a> <h3><a href="http://systransis.cn/yun/u-1617.html" rel="nofollow">Achilles</a></h3> <h6>男<span>|</span>高級(jí)講師</h6> <div id="qoyqs8suu2u" class="flex_box_zd user-msgbox-atten"> <a href="javascript:attentto_user(1617)" id="attenttouser_1617" class="grad follow-btn notfollow attention">我要關(guān)注</a> <a href="javascript:login()" title="發(fā)私信" >我要私信</a> </div> <div id="qoyqs8suu2u" class="user-msgbox-list flex_box_zd"> <h3 class="hpf">TA的文章</h3> <a href="http://systransis.cn/yun/ut-1617.html" class="box_hxjz">閱讀更多</a> </div> <ul class="user-msgbox-ul"> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/124560.html">ITLDC:黑五促銷活動(dòng),新加坡/美國(guó)/荷蘭/波蘭/烏克蘭vps等11個(gè)機(jī)房首年五折僅€16.5,不</a></h3> <p>閱讀 1188<span>·</span>2021-11-23 10:10</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/121606.html">Redis壓力測(cè)試——redis-benchmark</a></h3> <p>閱讀 1522<span>·</span>2021-09-30 09:47</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/121315.html">Gcore:邁阿密E5-2623v4 CPU獨(dú)立服務(wù)器75折,支持支付寶</a></h3> <p>閱讀 905<span>·</span>2021-09-27 14:02</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/116380.html">移動(dòng)端點(diǎn)擊事件全攻略,這里的坑你知多少?</a></h3> <p>閱讀 2980<span>·</span>2019-08-30 15:45</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/115837.html">js 手工繪制一個(gè)圖表(自定義chart),</a></h3> <p>閱讀 3027<span>·</span>2019-08-30 14:11</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/112906.html">h5項(xiàng)目各種小問題解決方案</a></h3> <p>閱讀 3621<span>·</span>2019-08-29 14:05</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/112753.html">Web Storage 與cookies</a></h3> <p>閱讀 1829<span>·</span>2019-08-29 13:51</p></li> <li><h3 class="ellipsis"><a href="http://systransis.cn/yun/111725.html">14天入門JavaScript-day two</a></h3> <p>閱讀 2212<span>·</span>2019-08-29 11:33</p></li> </ul> </div> <!-- 文章詳情右側(cè)廣告--> <div id="qoyqs8suu2u" class="com_layuiright-box"> <h6 class="top-com-title"><span>最新活動(dòng)</span></h6> <div id="qoyqs8suu2u" class="com_adbox"> <div id="qoyqs8suu2u" class="layui-carousel" id="right-item"> <div carousel-item> <div> <a href="http://systransis.cn/site/active/kuaijiesale.html?ytag=seo" rel="nofollow"> <img src="http://systransis.cn/yun/data/attach/240625/2rTjEHmi.png" alt="云服務(wù)器"> </a> </div> <div> <a href="http://systransis.cn/site/product/gpu.html" rel="nofollow"> <img src="http://systransis.cn/yun/data/attach/240807/7NjZjdrd.png" alt="GPU云服務(wù)器"> </a> </div> </div> </div> </div> <!-- banner結(jié)束 --> <div id="qoyqs8suu2u" class="adhtml"> </div> <script> $(function(){ $.ajax({ type: "GET", url:"http://systransis.cn/yun/ad/getad/1.html", cache: false, success: function(text){ $(".adhtml").html(text); } }); }) </script> </div> </div> </div> </div> </div> </section> <!-- wap拉出按鈕 --> <div id="qoyqs8suu2u" class="site-tree-mobile layui-hide"> <i class="layui-icon layui-icon-spread-left"></i> </div> <!-- wap遮罩層 --> <div id="qoyqs8suu2u" class="site-mobile-shade"></div> <!--付費(fèi)閱讀 --> <div class="qoyqs8suu2u" id="payread"> <div id="qoyqs8suu2u" class="layui-form-item">閱讀需要支付1元查看</div> <div id="qoyqs8suu2u" class="layui-form-item"><button class="btn-right">支付并查看</button></div> </div> <script> var prei=0; $(".site-seo-depict pre").each(function(){ var html=$(this).html().replace("<code>","").replace("</code>","").replace('<code class="javascript hljs" codemark="1">',''); $(this).attr('data-clipboard-text',html).attr("id","pre"+prei); $(this).html("").append("<code>"+html+"</code>"); prei++; }) $(".site-seo-depict img").each(function(){ if($(this).attr("src").indexOf('data:image/svg+xml')!= -1){ $(this).remove(); } }) $("LINK[href*='style-49037e4d27.css']").remove(); $("LINK[href*='markdown_views-d7a94ec6ab.css']").remove(); layui.use(['jquery', 'layer','code'], function(){ $("pre").attr("class","layui-code"); $("pre").attr("lay-title",""); $("pre").attr("lay-skin",""); layui.code(); $(".layui-code-h3 a").attr("class","copycode").html("復(fù)制代碼 ").attr("onclick","copycode(this)"); }); function copycode(target){ var id=$(target).parent().parent().attr("id"); var clipboard = new ClipboardJS("#"+id); clipboard.on('success', function(e) { e.clearSelection(); alert("復(fù)制成功") }); clipboard.on('error', function(e) { alert("復(fù)制失敗") }); } //$(".site-seo-depict").html($(".site-seo-depict").html().slice(0, -5)); </script> <link rel="stylesheet" type="text/css" href="http://systransis.cn/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css"> <script src="http://systransis.cn/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script> <script src="http://systransis.cn/yun/static/js/clipboard.js"></script> <script>hljs.initHighlightingOnLoad();</script> <script> function setcode(){ var _html=''; document.querySelectorAll('pre code').forEach((block) => { var _tmptext=$.trim($(block).text()); if(_tmptext!=''){ _html=_html+_tmptext; console.log(_html); } }); } </script> <script> function payread(){ layer.open({ type: 1, title:"付費(fèi)閱讀", shadeClose: true, content: $('#payread') }); } // 舉報(bào) function jupao_tip(){ layer.open({ type: 1, title:false, shadeClose: true, content: $('#jubao') }); } $(".getcommentlist").click(function(){ var _id=$(this).attr("dataid"); var _tid=$(this).attr("datatid"); $("#articlecommentlist"+_id).toggleClass("hide"); var flag=$("#articlecommentlist"+_id).attr("dataflag"); if(flag==1){ flag=0; }else{ flag=1; //加載評(píng)論 loadarticlecommentlist(_id,_tid); } $("#articlecommentlist"+_id).attr("dataflag",flag); }) $(".add-comment-btn").click(function(){ var _id=$(this).attr("dataid"); $(".formcomment"+_id).toggleClass("hide"); }) $(".btn-sendartcomment").click(function(){ var _aid=$(this).attr("dataid"); var _tid=$(this).attr("datatid"); var _content=$.trim($(".commenttext"+_aid).val()); if(_content==''){ alert("評(píng)論內(nèi)容不能為空"); return false; } var touid=$("#btnsendcomment"+_aid).attr("touid"); if(touid==null){ touid=0; } addarticlecomment(_tid,_aid,_content,touid); }) $(".button_agree").click(function(){ var supportobj = $(this); var tid = $(this).attr("id"); $.ajax({ type: "GET", url:"http://systransis.cn/yun/index.php?topic/ajaxhassupport/" + tid, cache: false, success: function(hassupport){ if (hassupport != '1'){ $.ajax({ type: "GET", cache:false, url: "http://systransis.cn/yun/index.php?topic/ajaxaddsupport/" + tid, success: function(comments) { supportobj.find("span").html(comments+"人贊"); } }); }else{ alert("您已經(jīng)贊過(guò)"); } } }); }); function attenquestion(_tid,_rs){ $.ajax({ //提交數(shù)據(jù)的類型 POST GET type:"POST", //提交的網(wǎng)址 url:"http://systransis.cn/yun/favorite/topicadd.html", //提交的數(shù)據(jù) data:{tid:_tid,rs:_rs}, //返回?cái)?shù)據(jù)的格式 datatype: "json",//"xml", "html", "script", "json", "jsonp", "text". //在請(qǐng)求之前調(diào)用的函數(shù) beforeSend:function(){}, //成功返回之后調(diào)用的函數(shù) success:function(data){ var data=eval("("+data+")"); console.log(data) if(data.code==2000){ layer.msg(data.msg,function(){ if(data.rs==1){ //取消收藏 $(".layui-layer-tips").attr("data-tips","收藏文章"); $(".layui-layer-tips").html('<i class="fa fa-heart-o"></i>'); } if(data.rs==0){ //收藏成功 $(".layui-layer-tips").attr("data-tips","已收藏文章"); $(".layui-layer-tips").html('<i class="fa fa-heart"></i>') } }) }else{ layer.msg(data.msg) } } , //調(diào)用執(zhí)行后調(diào)用的函數(shù) complete: function(XMLHttpRequest, textStatus){ postadopt=true; }, //調(diào)用出錯(cuò)執(zhí)行的函數(shù) error: function(){ //請(qǐng)求出錯(cuò)處理 postadopt=false; } }); } </script> <footer> <div id="qoyqs8suu2u" class="layui-container"> <div id="qoyqs8suu2u" class="flex_box_zd"> <div id="qoyqs8suu2u" class="left-footer"> <h6><a href="http://systransis.cn/"><img src="http://systransis.cn/yun/static/theme/ukd//images/logo.png" alt="UCloud (優(yōu)刻得科技股份有限公司)"></a></h6> <p>UCloud (優(yōu)刻得科技股份有限公司)是中立、安全的云計(jì)算服務(wù)平臺(tái),堅(jiān)持中立,不涉足客戶業(yè)務(wù)領(lǐng)域。公司自主研發(fā)IaaS、PaaS、大數(shù)據(jù)流通平臺(tái)、AI服務(wù)平臺(tái)等一系列云計(jì)算產(chǎn)品,并深入了解互聯(lián)網(wǎng)、傳統(tǒng)企業(yè)在不同場(chǎng)景下的業(yè)務(wù)需求,提供公有云、混合云、私有云、專有云在內(nèi)的綜合性行業(yè)解決方案。</p> </div> <div id="qoyqs8suu2u" class="right-footer layui-hidemd"> <ul class="flex_box_zd"> <li> <h6>UCloud與云服務(wù)</h6> <p><a href="http://systransis.cn/site/about/intro/">公司介紹</a></p> <p><a >加入我們</a></p> <p><a href="http://systransis.cn/site/ucan/onlineclass/">UCan線上公開課</a></p> <p><a href="http://systransis.cn/site/solutions.html" >行業(yè)解決方案</a></p> <p><a href="http://systransis.cn/site/pro-notice/">產(chǎn)品動(dòng)態(tài)</a></p> </li> <li> <h6>友情鏈接</h6> <p><a >GPU算力平臺(tái)</a></p> <p><a >UCloud私有云</a></p> <p><a >SurferCloud</a></p> <p><a >工廠仿真軟件</a></p> <p><a >Pinex</a></p> <p><a >AI繪畫</a></p> </li> <li> <h6>社區(qū)欄目</h6> <p><a href="http://systransis.cn/yun/column/index.html">專欄文章</a></p> <p><a href="http://systransis.cn/yun/udata/">專題地圖</a></p> </li> <li> <h6>常見問題</h6> <p><a href="http://systransis.cn/site/ucsafe/notice.html" >安全中心</a></p> <p><a href="http://systransis.cn/site/about/news/recent/" >新聞動(dòng)態(tài)</a></p> <p><a href="http://systransis.cn/site/about/news/report/">媒體動(dòng)態(tài)</a></p> <p><a href="http://systransis.cn/site/cases.html">客戶案例</a></p> <p><a href="http://systransis.cn/site/notice/">公告</a></p> </li> <li> <span><img src="https://static.ucloud.cn/7a4b6983f4b94bcb97380adc5d073865.png" alt="優(yōu)刻得"></span> <p>掃掃了解更多</p></div> </div> <div id="qoyqs8suu2u" class="copyright">Copyright ? 2012-2023 UCloud 優(yōu)刻得科技股份有限公司<i>|</i><a rel="nofollow" >滬公網(wǎng)安備 31011002000058號(hào)</a><i>|</i><a rel="nofollow" ></a> 滬ICP備12020087號(hào)-3</a><i>|</i> <script type="text/javascript" src="https://gyfk12.kuaishang.cn/bs/ks.j?cI=197688&fI=125915" charset="utf-8"></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://#/hm.js?290c2650b305fc9fff0dbdcafe48b59d"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-DZSMXQ3P9N"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-DZSMXQ3P9N'); </script> <script> (function(){ var el = document.createElement("script"); el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?99f50ea166557aed914eb4a66a7a70a4709cbb98a54ecb576877d99556fb4bfc3d72cd14f8a76432df3935ab77ec54f830517b3cb210f7fd334f50ccb772134a"; el.id = "ttzz"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(el, s); })(window) </script></div> </div> </footer> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://systransis.cn/" title="成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费">成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费</a> <div class="friend-links"> </div> </div> </footer> <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body><div id="bvpn5" class="pl_css_ganrao" style="display: none;"><legend id="bvpn5"></legend><strong id="bvpn5"><optgroup id="bvpn5"></optgroup></strong><font id="bvpn5"><progress id="bvpn5"></progress></font><pre id="bvpn5"></pre><dfn id="bvpn5"><mark id="bvpn5"><span id="bvpn5"><legend id="bvpn5"></legend></span></mark></dfn><menuitem id="bvpn5"></menuitem><mark id="bvpn5"></mark><pre id="bvpn5"><p id="bvpn5"></p></pre><form id="bvpn5"><output id="bvpn5"></output></form><label id="bvpn5"><strong id="bvpn5"><ruby id="bvpn5"><thead id="bvpn5"></thead></ruby></strong></label><form id="bvpn5"><output id="bvpn5"></output></form><dfn id="bvpn5"><mark id="bvpn5"><span id="bvpn5"><legend id="bvpn5"></legend></span></mark></dfn><legend id="bvpn5"><dfn id="bvpn5"><dfn id="bvpn5"><rp id="bvpn5"></rp></dfn></dfn></legend><dfn id="bvpn5"></dfn><th id="bvpn5"><b id="bvpn5"></b></th><span id="bvpn5"></span><u id="bvpn5"><ruby id="bvpn5"><form id="bvpn5"><legend id="bvpn5"></legend></form></ruby></u><thead id="bvpn5"><label id="bvpn5"></label></thead><em id="bvpn5"><big id="bvpn5"></big></em><legend id="bvpn5"><sup id="bvpn5"></sup></legend><big id="bvpn5"><dl id="bvpn5"><optgroup id="bvpn5"><video id="bvpn5"></video></optgroup></dl></big><menuitem id="bvpn5"></menuitem><tt id="bvpn5"><big id="bvpn5"></big></tt><dl id="bvpn5"></dl><nobr id="bvpn5"><b id="bvpn5"></b></nobr><ol id="bvpn5"><pre id="bvpn5"><track id="bvpn5"><tt id="bvpn5"></tt></track></pre></ol><strong id="bvpn5"><ruby id="bvpn5"></ruby></strong><small id="bvpn5"></small><form id="bvpn5"><thead id="bvpn5"></thead></form><sub id="bvpn5"></sub><legend id="bvpn5"></legend><small id="bvpn5"></small><track id="bvpn5"><tt id="bvpn5"></tt></track><var id="bvpn5"><form id="bvpn5"><ins id="bvpn5"><sub id="bvpn5"></sub></ins></form></var><output id="bvpn5"><address id="bvpn5"></address></output><u id="bvpn5"><ruby id="bvpn5"><form id="bvpn5"><legend id="bvpn5"></legend></form></ruby></u><p id="bvpn5"><strong id="bvpn5"></strong></p><u id="bvpn5"></u><thead id="bvpn5"><legend id="bvpn5"><label id="bvpn5"><label id="bvpn5"></label></label></legend></thead><listing id="bvpn5"><dfn id="bvpn5"></dfn></listing><form id="bvpn5"><legend id="bvpn5"></legend></form><thead id="bvpn5"><label id="bvpn5"><u id="bvpn5"><rp id="bvpn5"></rp></u></label></thead><em id="bvpn5"></em><mark id="bvpn5"></mark><ol id="bvpn5"><pre id="bvpn5"><video id="bvpn5"><em id="bvpn5"></em></video></pre></ol><strong id="bvpn5"></strong><form id="bvpn5"></form><output id="bvpn5"><sub id="bvpn5"></sub></output><dfn id="bvpn5"></dfn><tt id="bvpn5"></tt></div> <script src="http://systransis.cn/yun/static/theme/ukd/js/common.js"></script> <<script type="text/javascript"> $(".site-seo-depict *,.site-content-answer-body *,.site-body-depict *").css("max-width","100%"); </script> </html>