A. java正則表達式,不能輸入引號(單引號和雙引號)以及特殊字元<、>、#和&
//寫了兩個,不知你要的效果是什麼
Strings3="a'b"c<d>e#f&g";
//替換所有非法字元
//結果:a*b*c*d*e*f*g
System.out.println(s3.replaceAll("['"<>#&]","*"));
//替換所有非非法字元
//結果:*'*"*<*>*#*&*
System.out.println(s3.replaceAll("[^'"<>#&]","*"));
B. java中的正則表達式
Java正則表達式 (<img.*?)style=\".*?\" 替換成 $1
其中.*表示0個或0以上多個任意字元
.*?表示0個或0以上多個任意字元的非貪婪匹配,就是假如一個句子中有多個style,它匹配距離最近的那個style,同理後面的.*?匹配距離最近的雙引號
$1表示反向引用,它代表的是正則表達式中的第一個小括弧所括起來的分組的內容,如果有兩個小括弧括起來的內容,則分別用$1,$2表示它們(在替換後的字元串中)
完整的Java程序如下
123456public class CC { public static void main(String[] args) { String s="<img src=\"file/img/2016/12-28/1234-25521482893088459.jpg\" title=\"1234.jpg\" alt=\"\" width=\"396\" height=\"271\" style=\"width: 396px; height: 271px;\"/>"; System.out.println(s.replaceAll("(<img.*?)style=\".*?\"", "$1")); }}
運行結果
<img src="file/img/2016/12-28/1234-25521482893088459.jpg" title="1234.jpg" alt="" width="396" height="271" />
C. java正則表達式",(=[^\"]+\",|[^\"]+\"$)
我舉例說明:
x(?=y)
▲表示:右邊緊跟y的x,但只包含x,不包含y
x(?=y|z)
▲表示:右邊緊跟y或z的x,但只包含x,不包含y或z
x(?!y)
▲表示:右邊不跟y的x,只包含x
你的這個正則表達式完全正確:
,(?=[^\"]+?\",|[^\"]+?\"$)
▲它只匹配1個,
▲▲但條件是:
▲條件1▲:此,右邊到第1個",之間有至少1個不是"的字元
▲條件2▲:此,右邊到結尾的"之間有至少1個不是"的字元
舉例說明:
它匹配下面3行中的前2個,
(每次匹配1個,而不是同時匹配前2個)
x,y,z",
x,y,,",
x,y,z,"
你要匹配這樣的空格,只需把此式中的首個,換成空格即可:
(?=[^\"]+?\",|[^\"]+?\"$)
▲這可以處理你舉的例子。
如果情況更復雜,請再舉例,我繼續幫你。
D. java的正則表達式解析
如果你是想獲取字串中的數字 那你這段代碼是有問題的 正則表達式也是有問題的 你應該這樣用
public static void main(String[] args) {
String str = "abc$31.8zhe";
String reg = "[0-9\\.]+";
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(str);
m.find();
System.out.println(m.group());
}
[0-9\\.]+ 表示的意思是匹配0-9的數字和.本身 "."確實是需要轉義的 而且因為在Java中"\"本身就是轉義符 所以還需要再次轉義 因此變成了"\\." +表示匹配一次或者多次
實際上0-9可以用\\d 代替 \d就表示匹配所有數字
當然這個表達式本身也不完善 比如它會匹配到類似與23. 這樣的串 即使小數點後沒有數字
樓主你會發現正則表達式和結果相反是因為你可能使用了replaceAll("") 它將所有匹配的片段替換為空 因此你的[^0-9\\.]其實是匹配了除了0-9和"."之外的所有字元 那些字元都被替換成了空 最後你的字串中的abc$zhe被幹掉了 而只有沒法匹配[^0-9\\.]的31.8被留了下來
E. Java正則表達式為什麼是雙斜杠
除了定義單個字元之外,也存在一組轉義字元:
\\(表示單個\)
\t(表示按下tab)
\n(表示換行)
\"(引號)
\'(單引號)
F. 使用java語言,正則表達式把下面的字元串中的href後面的的兩個引號中間的三個字元串取出來
publicstaticvoidmain(String[]args)throwsParseException{
Stringcontent="<ahref="/search?newwindow=1&safe=strict&hl=zh-CN&bih=777&biw=1231&q=boa+made+in+twenty&tbm=isch&tbs=simg:-CBoKCggIARIEXjOHZQw,isz:s&sa=X&ei=-QXDUaCNJMmikwWa24DICA&ved=0CCcQ2A4oAg">小尺寸</a>"+
"</span><spanclass="gl">-"+
"<ahref="/search?newwindow=1&safe=strict&hl=zh-CN&bih=777&biw=1231&q=boa+made+in+twenty&tbm=isch&tbs=simg:-CBoKCggIARIEXjOHZQw,isz:m&sa=X&ei=-QXDUaCNJMmikwWa24DICA&ved=0CCgQ2A4oAw">中尺寸</a>"+
"</span><spanclass="gl">-"+
"<ahref="/search?newwindow=1&safe=strict&hl=zh-CN&bih=777&biw=1231&q=boa+made+in+twenty&tbm=isch&tbs=simg:-CBoKCggIARIEXjOHZQw,isz:l&sa=X&ei=-QXDUaCNJMmikwWa24DICA&ved=0CCkQ2A4oBA">大尺寸</a></span></div></div>";
Patternp=Pattern.compile("href="(.*?)"");
Matcherm=p.matcher(content);
while(m.find()){
System.out.println(m.group(1));
}
}
G. 如何用正則表達式找出字元串中的雙引號,並且將所有的雙引號替換為單引號(使用java)
\"{2}這個貌似就可以找出雙引號,然後你再用java中的字元串替換函數來替換就可以了。
H. "12345" "27462" java正則表達式如何匹配雙引號引起來的5位數字,完全匹配。求大神
packagecn.test;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
publicclassTest{
publicstaticvoidorFind(StringregexString){
Patternpattern=Pattern.compile("「\d{5}」");
Matchermatcher=pattern.matcher(regexString);
Stringtemp="";
while(matcher.find()){
temp=matcher.group().replaceAll("「","").replaceAll("」","");
System.out.println(temp);
}
}
publicstaticvoidmain(String[]args){
StringregexString="nfwenlwkngkwleknkwk"12345"nlkknflkwenfk"43678"「12345」wefnw0-0-0";
Patternpattern=Pattern.compile(""\d{5}"");
Matchermatcher=pattern.matcher(regexString);
Stringtemp="";
while(matcher.find()){
temp=matcher.group().replaceAll(""","");
System.out.println(temp);
}
orFind(regexString);
}
}
//不多說什麼,運行結果說話;記得java的字元串中用到雙引號「」要用"轉義的