A. 想指教一個java問題——replace(/,/g,"")正則表達式 這個什麼意思呀
replace是替換的意思,意思就是把g替換為空
B. java replace 正則表達式
表達方式:
replace方法並不能改變字元串本身的,只是replace方法能返回一個處理後的字元串而已,例如:
String
s="hello";
System.out.println(s.replace("h","H"));
System.out.println(s);
輸出結果:
Hello
hello
srcString.replaceAll("[\s()]","_");
\s表示一個空白符;
[\s()]表示
空格
左括弧
或者
右括弧中出現其中任何一個
replaceAll("[\s()]","_");
即表示用_替代字元串中出現的空格符、左括弧、右括弧。
C. java replace正則表達式 去掉 "[" 和 「]」 之間的所有字元,包括「 [ ] "本身
Stringcontent="iwantto[thank]you[thank]very" ;
Stringpattern="\[[^\]]+\]";
content=content.replaceAll(pattern,"");
System.out.println(content);
\[ (以 [ 開頭)[ ^\] ]+ (不包含 ] 的字元)\]( 以 ] 結尾)
D. java中replace和replaceAll的區別
replace和replaceAll是JAVA中常用的替換字元的方法,它們的區別是:
1) replace的參數是char和CharSequence,即可以支持字元的替換,也支持字元串的替換(CharSequence即字元串序列的意思,說白了也就是字元串);
2) replaceAll的參數是regex,即基於規則表達式的替換,比如,可以通過replaceAll("\\d", "*")把一個字元串所有的數字字元都換成星號;
相同點是都是全部替換,即把源字元串中的某一字元或字元串全部換成指定的字元或字元串,如果只想替換第一次出現的,可以使用 replaceFirst(),這個方法也是基於規則表達式的替換,但與replaceAll()不同的是,只替換第一次出現的字元串;
另外,如果replaceAll()和replaceFirst()所用的參數據不是基於規則表達式的,則與replace()替換字元串的效果是一樣的,即這兩者也支持字元串的操作;
E. java正則表達式怎麼一個個替換匹配的內容
Stringa="我是f_static_000的f_static_001aaaf_static_001";
//正則根據自己需要修改,replaceAll可以使用正則的捕獲組功能,$n引用第n個捕獲組
/**
replaceAll(regExp,replacement);第一個參數是正則字元串,第二個是替換內容
正則裡面有捕獲(正則裡面用小括弧捕獲)和引用的功能
*/
a=a.replaceAll("(f_static_\d+)","#[face/png/$1.png]#");
F. JAVA中REPLACE和REPLACEALL的區別 以及一些特殊字元替換
replace的參數是char和CharSequence,即可以支持字元的替換,也支持字元串的替換(CharSequence即字元串序列的意思,說白了也就是字元串);
replaceAll的參數是regex,即基於規則表達式的替換,比如:可以通過replaceAll("\\d", "*")把一個字元串所有的數字字元都換成星號;
相同點:都是全部替換,即把源字元串中的某一字元或字元串全部換成指定的字元或字元串;
不同點:replaceAll支持正則表達式,因此會對參數進行解析(兩個參數均是),如replaceAll("\\d", "*"),而replace則不會,replace("\\d","*")就是替換"\\d"的昌野字元串,而不會解析為正則。
另外還有一個不同點:「\」在Java中是一個轉義字元,所以需要用兩個代表一個。
例如System.out.println( "\\" ) ;只列印出一個"\"。但是「\」也是正則表達式中的轉義字元,需要用兩納迅伏個代表一個。所以:\\\\被java轉換成\\,\\又被正則表達式轉換成\,因此用replaceAll替換「\」為"\\",就要用replaceAll("洞攜\\\\","\\\\\\\\"),而replace則replace("\\","\\\\")。
如果只想替換第一次出現的,可以使用replaceFirst(),這個方法也是基於規則表達式的替換,但與replaceAll()不同的是,只替換第一次出現的字元串。
G. java正則表達式多個字元串替換怎樣實現
str.replaceAll("[A-Z]+\\d{3}", "hello").replaceAll("[^A-Za-z]", "==");
H. java正則表達式怎麼定義只替換中間的字元
可以使用分組來完成,替換字元串中使用$1、$2、$3……可以獲取對應組的匹配結果。如果前後的字元串是固定的那更簡單,直接在替換的時候寫上就好了。
因為String的replaceAll就是使用的正則表達式所以示例直接使用的String的替換,Pattern的替換同理。
publicclassDemo{
publicstaticvoidmain(String[]args){
Stringstr="aa文字1bb哈哈cc測試dx,測試字元串aa1234bb";
//替換aa、bb之間的字元串為"成功"
Stringstr1=str.replaceAll("aa.*?bb","aa成功bb");
System.out.println(str1);
//替換aa、bb之間的字元串為"成功"
Stringstr2=str.replaceAll("(aa).*?(bb)","$1成功$2");
System.out.println(str2);
//替換小寫字母之間的字元串為"成功"
Stringstr3=str.replaceAll("([a-z]+).*?([a-z]+)","$1成功$2");
System.out.println(str3);
}
}
I. 寫一個java replace函數的正則表達式,將所有0開頭的數字中的0替換掉
Stringx="01_03_sfd2ef_10";
Stringreg="0(\d+)";
System.out.println(x.replaceAll(reg,"$1"));
J. java正則表達式如何獲取字元串中所有匹配內容
java正則表達式提取需要用到Matcher類。
正則規則就是「一個數字加上大於等於0個非數字再加上結束符」
Pattern pattern
= Pattern.pile("(\d)[^\d]*$")
Matcher matcher
= pattern.matcher(s)
if(matcher.find())
System.out.println
(matcher.group(1)); } }
mport java.util.regex.Matcher;import java.util.regex.Pattern;public class Test {public static void main(String[] args) {String s = "A876X"; 把要匹配的字元串寫成正則表達式,然後要提取的字元使用括弧括起來 在這里,我們要提取最後一個數字,正則規則就是「一個數字加上大於等於0個非數字再加上結束符」Pattern pattern = Pattern.pile("(\d)[^\d]*$");Matcher matcher = pattern.matcher(s);if(matcher.find())System.out.println(matcher.group(1));}}
string pattern=@"<font>(.+?)</font>"
取分組 Match.group[1]
實現的效果:在字元串中abcdefgname='test'sddfhskshjsfsjdfps中獲取name的值test
實現的機制:通過replace的回調函數獲取。
可以通過下面的代碼獲取匹配部分
var str = "abcdefgname='test'sddfhskshjsfsjdfps";
var reg = /name='((w|-|s)+)/ig;
str.replace(reg, function() {
console.log(arguments.length); 5
console.log(arguments[1]);test
});
字元串 stringObject 的 replace() 方法執行的是查找並替換的操作。它將在 stringObject 中查找與 regexp 相匹配的子字元串,然後用 replacement 來替換這些子串。如果 regexp 具有全局標志 g,那麼 replace() 方法將替換所有匹配的子串。否則,它只替換第一個匹配子串。
java正則提取需要用到Matcher類,下面給出案例示例供參考
需要提取車牌號中最後一個數字,比如說:蘇A7865提取5,蘇A876X提取6
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
String s = "A876X";
把要匹配的字元串寫成正則表達式,然後要提取的字元使用括弧括起來
在這里,我們要提取最後一個數字,正則規則就是「一個數字加上大於等於0個非數字再加上結束符」
Pattern pattern = Pattern.pile("(\d)[^\d]*$");
Matcher matcher = pattern.matcher(s);
if(matcher.find())
System.out.println(matcher.group(1));
}
}
關於Matcher 中的幾個方法說明:
Mathcer.start()
Matcher.end()
Matcher.group()
當使用matches(),lookingAt(),find()執行匹配操作後,就可以利用以上三個方法得到更詳細的信息.
start()返回匹配到的子字元串在字元串中的索引位置.
end()返回匹配到的子字元串的最後一個字元在字元串中的索引位置.
group()返回匹配到的子字元串
示例代碼如下,具體功能請參考注釋
Pattern p=Pattern.pile(「d+」);
Matcher m=p.matcher(「aaa2223bb」);
m.find();匹配2223
m.start();返回3
m.end();返回7,返回的是2223後的索引號
m.group();返回2223
Mathcer m2=p.matcher(「2223bb」);
m2.lookingAt(); 匹配2223
m2.start(); 返回0,由於lookingAt()只能匹配前面的字元串,所以當使用lookingAt()匹配時,start()方法總是返回0
m2.end(); 返回4
m2.group(); 返回2223
Matcher m3=p.matcher(「2223」); 如果Matcher m3=p.matcher(「2223bb」); 那麼下面的方法出錯,因為不匹配返回false
m3.matches(); 匹配整個字元串
m3.start(); 返回0
m3.end(); 返回3,原因相信大家也清楚了,因為matches()需要匹配所有字元串
m3.group(); 返回2223
另外,Mathcer類中start(),end(),group()均有一個重載方法它們是start(int i),end(int i),group(int i)專用於分組操作,Mathcer類還有一個groupCount()用於返回有多少組.
示例如下:
Pattern p=Pattern.pile(「([a-z]+)(d+)」);
Matcher m=p.matcher(「aaa2223bb」);
m.find(); 匹配aaa2223
m.groupCount(); 返回2,因為有2組
m.start(1); 返回0 返回第一組匹配到的子字元串在字元串中的索引號
m.start(2); 返回3
m.end(1); 返回3 返回第一組匹配到的子字元串的最後一個字元在字元串中的索引位置.
m.end(2); 返回7
m.group(1); 返回aaa,返回第一組匹配到的子字元串
m.group(2); 返回2223,返回第二組匹配到的子字元串
注意: 只有當匹配操作成功,才可以使用start(),end(),group()三個方法,否則會拋出java.lang.IllegalStateException,也就是當matches(),lookingAt(),find()其中任意一個方法返回true時,才可以使用。
針對你的問題:
<aa>是給數組命名
(?<name>subexpression)
其中name是有效的組名稱,而subexpression是任何有效的正則表達式模式。 name不得包含任何標點符號字元,並且不能以數字開頭。
這個方式相當於下面這個表達式
"(?<!0-9a-zA-Z)([0-9]|[a-z]|[A-Z]){1,}"
String str = "我的QQ是:456456我的電話是:0532214我的郵箱是:aaa@aaa.";
d 表示0-9 任意一個數字 後面有+號 說明這個0-9單個數位出現一到多次 比如21312314
String reg = "\d+";
Pattern是一個正則表達式經編譯後的表現模式。
Pattern pattern = Pattern.pile (reg);
Matcher 一個Matcher對象是一個狀態機器,它依據Pattern對象做為匹配模式對字元串展開匹配檢查。
Matcher matcher = pattern.matcher (str);
只有執行了find()方法 後,狀態機matcher才是真正開始進行匹配工作的!
while (matcher.find ())
{
matcher.group()返回匹配到的子字元串
System.out.println (matcher.group ());
}
}
正則表達式為:.*a.*b.*c.*
package .test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
/**
* @param args
*/
public static void main(String[] args) {
TODO Auto-generated method stub
String source = "abcdefg
" +
"uaibec
" +
"wabbcd
" +
"adb
" +
"acb";
String regex = "(.*a.*b.*c.*)";
Pattern pattern = Pattern.pile(regex,Pattern.MULTILINE);
Matcher matcher = pattern.matcher(source);
while(matcher.find()){
System.out.println(matcher.group());
}
}
}
你可以直接復制出來,運行一下就可以了