最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java正則表達式對特殊字符的轉(zhuǎn)義以及異?,F(xiàn)象

 更新時間:2023年06月29日 09:01:38   作者:胡八一  
這篇文章主要給大家介紹了關(guān)于java正則表達式對特殊字符的轉(zhuǎn)義以及異常現(xiàn)象的相關(guān)資料,在Java中使用正則表達式匹配特殊字符也需要使用轉(zhuǎn)義字符"\",需要的朋友可以參考下

正則表達式語法

在其他語言中,\\表示:我想要在正則表達式中插入一個普通的(字面上的)反斜杠,請不要給它任何特殊的意義。

在 Java 中,\\ 表示:我要插入一個正則表達式的反斜線,所以其后的字符具有特殊的意義。

所以,在其他的語言中(如Perl),一個反斜杠 \ 就足以具有轉(zhuǎn)義的作用,而在 Java 中正則表達式中則需要有兩個反斜杠才能被解析為其他語言中的轉(zhuǎn)義作用。也可以簡單的理解在 Java 的正則表達式中,兩個 \\ 代表其他語言中的一個 \,這也就是為什么表示一位數(shù)字的正則表達式是 \\d,而表示一個普通的反斜杠是\\\\。

java正則表達式對特殊字符的轉(zhuǎn)義

正則表達式會對一些特殊字符進行轉(zhuǎn)義,主要有以下字符:

'$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|'

比如,正則表達式對特殊字符’ | ’ 的轉(zhuǎn)義:

public static void main(String[] args) {
    String str = "a|b|c";
    // 錯誤示范
    // str.split("|");
    //
    // 正確的寫法,應(yīng)該在需要轉(zhuǎn)義的字符前加上 "\\"
    String[] split = str.split("\\|");
    for (String s : split) {
        System.out.print(s + " "); // 控制臺打印 a b c
    }
}

異?,F(xiàn)象

正則需要轉(zhuǎn)義字符:

'$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|'

異?,F(xiàn)象: java.util.regex.PatternSyntaxException: Dangling meta. character '*' near index 0
解決方法: 對特殊字符加\轉(zhuǎn)義即可。

注意:雖然使用[]在部分條件下也可以,但是在對于(、[、{范圍邊界開始符不匹配的情況下會報如下:
異常現(xiàn)象:java.util.regex.PatternSyntaxException: Illegal repetition near index 50

Java過濾正則表達式特殊字代碼如下(注意:\需要第一個替換,否則replace方法替換時會有邏輯bug)

/**
 * 轉(zhuǎn)義正則特殊字符 ($()*+.[]?\^{},|)
 * 
 * @param keyword
 * @return
 */
public static String escapeExprSpecialWord(String keyword) {
	if (StringUtils.isNotBlank(keyword)) {
		String[] fbsArr = { "\\", "$", "(", ")", "*", "+", ".", "[", "]", "?", "^", "{", "}", "|" };
		for (String key : fbsArr) {
			if (keyword.contains(key)) {
				keyword = keyword.replace(key, "\\" + key);
			}
		}
	}
	return keyword;
}

實戰(zhàn)

后臺傳回的網(wǎng)址:http://192.168.1.17:8096/detection-admin\video\2020\11\4\浙B99939\3604252011040004\浙B99939_1_PDASP_01.mp4

通過工具類轉(zhuǎn)換:

    /**
     * @author Longchengbin
     * @description 將網(wǎng)址反斜杠轉(zhuǎn)成正斜杠并將中文轉(zhuǎn)為16進制字符
     * @since 2020-11-4 16:33
     **/
    public static String decode(String url) {
        String[] strings = url.split("\\\\");
        String s1 = strings[strings.length - 1];
        String s2 = strings[strings.length - 3];
        String s = "";
        try {
            //將反斜杠替換成正斜杠
            s = url.replaceAll("\\\\", "/").
                    //將中文轉(zhuǎn)成16進制字符
                            replace(s1, URLEncoder.encode(s1, "utf-8")).replace(s2, URLEncoder.encode(s2, "utf-8"));
            LogUtils.w(s);
        } catch (UnsupportedEncodingException e) {
            LogUtils.e("網(wǎng)址轉(zhuǎn)換報錯:" + e.toString());
        }
        return s;
    }

轉(zhuǎn)換后:

http://192.168.1.17:8096/detection-admin/video/2020/11/4/%E6%B5%99B99939/3604252011040004/%E6%B5%99B99939_1_PDASP_01.mp4

總結(jié)

到此這篇關(guān)于java正則表達式對特殊字符的轉(zhuǎn)義以及異常現(xiàn)象的文章就介紹到這了,更多相關(guān)java正則對特殊字符轉(zhuǎn)義內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JMX監(jiān)控的具體使用

    JMX監(jiān)控的具體使用

    JMX最常見的場景是監(jiān)控Java程序的基本信息和運行情況,本文主要介紹了JMX監(jiān)控的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Java 安全模型,你了解了嗎

    Java 安全模型,你了解了嗎

    這篇文章主要介紹了Java 安全模型。Java的安全模型是其多個重要結(jié)構(gòu)特點之一,它使Java成為適用于網(wǎng)絡(luò)環(huán)境的技術(shù)。Java安全模型側(cè)重于保護終端用戶免受從網(wǎng)絡(luò)下載的、來自不可靠來源的、惡意程序(以及善意程序中的bug)的侵犯。,需要的朋友可以參考下
    2019-06-06
  • 詳談cxf和axis兩種框架下的webservice客戶端開發(fā)

    詳談cxf和axis兩種框架下的webservice客戶端開發(fā)

    這篇文章主要介紹了詳談cxf和axis兩種框架下的webservice客戶端開發(fā),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 基于mybatis中test條件中單引號雙引號的問題

    基于mybatis中test條件中單引號雙引號的問題

    這篇文章主要介紹了基于mybatis中test條件中單引號雙引號的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 一文帶你全面了解Java?Properties類

    一文帶你全面了解Java?Properties類

    Properties是JDK1.0中引入的java類,目前也在項目中大量使用,主要用來讀取外部的配置,那除了這個,你對它其他的一些api也了解嗎??你了解它是怎么實現(xiàn)的嗎??如果不清楚的話,就通過本篇文章帶你一探究竟
    2022-09-09
  • Java實現(xiàn)俄羅斯方塊小游戲源碼

    Java實現(xiàn)俄羅斯方塊小游戲源碼

    這篇文章主要為大家詳細介紹了Java實現(xiàn)俄羅斯方塊小游戲源碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Spring boot實現(xiàn)文件上傳實例(多文件上傳)

    Spring boot實現(xiàn)文件上傳實例(多文件上傳)

    本篇文章主要介紹了Spring boot實現(xiàn)文件上傳實例(多文件上傳),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • SpringBoot實現(xiàn)固定和動態(tài)定時任務(wù)的三種方法

    SpringBoot實現(xiàn)固定和動態(tài)定時任務(wù)的三種方法

    定時器是我們項目中經(jīng)常會用到的,本文主要介紹了SpringBoot實現(xiàn)固定和動態(tài)定時任務(wù)的三種方法,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java Map遍歷2種實現(xiàn)方法代碼實例

    Java Map遍歷2種實現(xiàn)方法代碼實例

    這篇文章主要介紹了Java Map遍歷2種實現(xiàn)方法代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Spring MVC Mybatis多數(shù)據(jù)源的使用實例解析

    Spring MVC Mybatis多數(shù)據(jù)源的使用實例解析

    項目需要從其他網(wǎng)站獲取數(shù)據(jù),因為是臨時加的需求,這篇文章主要介紹了Spring MVC Mybatis多數(shù)據(jù)源的使用實例解析,需要的朋友可以參考下
    2016-12-12

最新評論

广河县| 德令哈市| 崇左市| 廉江市| 台东市| 敦煌市| 肇源县| 临湘市| 黄龙县| 中西区| 榕江县| 平安县| 巧家县| 金昌市| 开江县| 桃源县| 赣州市| 松阳县| 集安市| 棋牌| 昆山市| 冀州市| 军事| 河北区| 临桂县| 新沂市| 股票| 石门县| 南昌县| 巴里| 宽甸| 启东市| 布拖县| 福建省| 阿克| 绥化市| 宾阳县| 囊谦县| 江阴市| 林口县| 东辽县|