Java正則表達(dá)式循環(huán)匹配字符串方式
正則表達(dá)式循環(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,}$";
// 正則表達(dá)式
Pattern pattern = Pattern.compile(patternStr);
// 參數(shù):要匹配的目標(biāo)字符串
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匹配正則表達(dá)式大全
java匹配字符串表達(dá)式在我們數(shù)據(jù)處理方面是及其重要的,現(xiàn)在就把我這幾天數(shù)據(jù)處理比較常用的向大家介紹一下,常規(guī)的一些匹配方式就不介紹了,我們來(lái)學(xué)習(xí)一些特殊的
我們先舉個(gè)例子來(lái)看看Java匹配正則表達(dá)式
Pattern pattern = Pattern.compile("采購(gòu)(人名稱|人單位|名稱).*");
?? ??? ?Matcher matcher = pattern.matcher("采購(gòu)名稱乒位");
?? ??? ?String dateStr = null;
?? ??? ?if (matcher.find()) {
?? ??? ??? ?dateStr = matcher.group(0);
?? ??? ??? ?System.out.println(dateStr);
?? ??? ?}運(yùn)行結(jié)果如下:

匹配表達(dá)式的特殊情況
(1)匹配中文字符
Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]");
?? ??? ?Matcher matcher = pattern.matcher("2322購(gòu)購(gòu)購(gòu)購(gòu)232323");
?? ??? ?String dateStr = null;
?? ??? ?if (matcher.find()) {
?? ??? ??? ?dateStr = matcher.group(0);
?? ??? ??? ?System.out.println(dateStr);
?? ??? ?}運(yùn)行結(jié)果如下:

(2)匹配從規(guī)定字符開(kāi)始所有非換行字符
Pattern pattern = Pattern.compile("1.*");
?? ??? ?Matcher matcher = pattern.matcher("2312購(gòu)購(gòu)購(gòu)購(gòu)232323");
?? ??? ?String dateStr = null;
?? ??? ?if (matcher.find()) {
?? ??? ??? ?dateStr = matcher.group(0);
?? ??? ??? ?System.out.println(dateStr);
?? ??? ?}運(yùn)行結(jié)果如圖:

(3)使用字符串?dāng)?shù)組匹配多個(gè)條件匹配字符串,這是我在實(shí)習(xí)進(jìn)行處理數(shù)據(jù)的一個(gè)例子,希望有助于大家理解:



(4)對(duì)于字符串匹配查找多個(gè)符合條件的字符字串,我們用到group(),
group(num=0): 匹配的整個(gè)表達(dá)式的字符串,group() 可以一次輸入多個(gè)組號(hào),在這種情況下它將返回一個(gè)包含那些組所對(duì)應(yīng)值的元組。groups(): 返回一個(gè)包含所有小組字符串的元組,從 1 到 所含的小組號(hào)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)的3des加密解密工具類示例
這篇文章主要介紹了Java實(shí)現(xiàn)的3des加密解密工具類,結(jié)合完整實(shí)例形式分析了3des加密解密的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-10-10
Java開(kāi)發(fā)學(xué)習(xí) Java數(shù)組操作工具
這篇文章主要為大家詳細(xì)介紹了自己編寫的Java數(shù)組操作工具,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
mybatis的association傳遞參數(shù)問(wèn)題示例
這篇文章主要介紹了mybatis的association傳遞參數(shù)問(wèn)題,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12
Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程
這篇文章主要介紹了Java線程編程中Thread類的基礎(chǔ)學(xué)習(xí)教程,Thread類包含諸多操作線程的方法,非常重要,需要的朋友可以參考下2015-12-12
Spring和SpringMVC父子容器關(guān)系初窺(小結(jié))
這篇文章主要介紹了Spring和SpringMVC父子容器關(guān)系初窺(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01

