Java正則表達式循環(huán)匹配字符串方式
正則表達式循環(huán)匹配字符串
public static void main(String[] args) { /** * String str = "[Part 'name=1234567']"; */ String targetStr = "where 1=1 [and user_name like '%$user_name$%'] [and company_name like '%$company_name$%']"; String[] split = targetStr.split("]"); System.out.println("split==== " + split); String patternStr = "^[\\s\\S]{0,}\\[\\s{0,}and\\s{0,}[\\d\\W\\w]{1,}\\s{0,}[\\w]{1,}\\s{0,}\\W{0,}(\\$.+?\\$)\\W{0,}\\s{0,}\\s{0,}$"; // 正則表達式 Pattern pattern = Pattern.compile(patternStr); // 參數(shù):要匹配的目標字符串 Map<String,String> map = new HashMap<String,String>(); map.put("$user_name$","user_value"); map.put("$company_name$","company_value"); map.put("$school_name$","$school_name$"); /*int groupCount = matcher.groupCount(); System.out.println("groupCount==== " + groupCount);*/ for (int i = 0;i<=split.length-1;i++) { Matcher matcher = pattern.matcher(split[i]); System.out.println("split[i]==== " + split[i]); boolean b = matcher.find(); if (b) { String key = matcher.group(1); for (Map.Entry<String,String> m : map.entrySet()){ String mapKey = m.getKey(); if (key.equalsIgnoreCase(mapKey)) { System.out.println("key==== " + key ); /*String bigGroup = matcher.group(); System.out.println("bigGroup==== " + bigGroup);*/ targetStr = targetStr.replace(key,m.getValue()); // System.out.println("targetStr after replace innner==== " + targetStr); } } } // System.out.println("targetStr after replace outer==== " + targetStr); } System.out.println("targetStr after replace final==== " + targetStr); }
Java匹配正則表達式大全
java匹配字符串表達式在我們數(shù)據(jù)處理方面是及其重要的,現(xiàn)在就把我這幾天數(shù)據(jù)處理比較常用的向大家介紹一下,常規(guī)的一些匹配方式就不介紹了,我們來學習一些特殊的
我們先舉個例子來看看Java匹配正則表達式
Pattern pattern = Pattern.compile("采購(人名稱|人單位|名稱).*"); ?? ??? ?Matcher matcher = pattern.matcher("采購名稱乒位"); ?? ??? ?String dateStr = null; ?? ??? ?if (matcher.find()) { ?? ??? ??? ?dateStr = matcher.group(0); ?? ??? ??? ?System.out.println(dateStr); ?? ??? ?}
運行結(jié)果如下:
匹配表達式的特殊情況
(1)匹配中文字符
Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]"); ?? ??? ?Matcher matcher = pattern.matcher("2322購購購購232323"); ?? ??? ?String dateStr = null; ?? ??? ?if (matcher.find()) { ?? ??? ??? ?dateStr = matcher.group(0); ?? ??? ??? ?System.out.println(dateStr); ?? ??? ?}
運行結(jié)果如下:
(2)匹配從規(guī)定字符開始所有非換行字符
Pattern pattern = Pattern.compile("1.*"); ?? ??? ?Matcher matcher = pattern.matcher("2312購購購購232323"); ?? ??? ?String dateStr = null; ?? ??? ?if (matcher.find()) { ?? ??? ??? ?dateStr = matcher.group(0); ?? ??? ??? ?System.out.println(dateStr); ?? ??? ?}
運行結(jié)果如圖:
(3)使用字符串數(shù)組匹配多個條件匹配字符串,這是我在實習進行處理數(shù)據(jù)的一個例子,希望有助于大家理解:
(4)對于字符串匹配查找多個符合條件的字符字串,我們用到group(),
group(num=0)
: 匹配的整個表達式的字符串,group() 可以一次輸入多個組號,在這種情況下它將返回一個包含那些組所對應值的元組。groups()
: 返回一個包含所有小組字符串的元組,從 1 到 所含的小組號。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot 設置server.port不生效的原因及解決
這篇文章主要介紹了springboot 設置server.port不生效的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08SpringBoot?模板模式實現(xiàn)優(yōu)惠券邏輯的示例代碼
這篇文章主要介紹了SpringBoot?模板模式實現(xiàn)優(yōu)惠券邏輯,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08spring cloud實現(xiàn)前端跨域問題的解決方案
這篇文章主要介紹了 spring cloud實現(xiàn)前端跨域問題的解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01maven多profile 打包下 -P參和-D參數(shù)的實現(xiàn)
這篇文章主要介紹了maven多profile 打包下 -P參和-D參數(shù)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-11-11