⑴ 求java正則匹配<sup>任意字元</sup> 的sup標簽之間的內容
Stringstr="<sup>任意字元</sup>";
Patternp=Pattern.compile("<sup>([^<]*)</sup>");
Matcherm=p.matcher(str);
while(m.find()){
System.out.println(m.group(1));
}
若不能解決,可追問,我繼續幫你
⑵ 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());
}
}
}
你可以直接復制出來,運行一下就可以了
⑶ java有關正則表達式,我想匹配一個字元串中的任意字元,怎麼辦
"\."是被轉意了的,是要匹配一個「點」,不用加「\\」,直接用「."就可以了
⑷ 在Java中的變數名可以是任意字元嗎
可以的,變數名大小寫敏感,一個變數名字可以是任意合法的標示符 — 一個不限長度的 Unicode字母數字, 以字母 "$"或 "_"開頭, 然而,慣例以字母開頭定義變數名 , 而不是 "$" 或 "_",此外,"$";後續字元可以使字母, 數字, 美元符號或下劃線,慣例 (和通常意義)使用該規則. 當選用一個名字作為變數名, 不要使用簡寫。
⑸ java正則表達式中的 . 表示匹配任意字元,為什麼我這個不對呢
首先,點前面不能有轉義符 ,如果有轉義符點就只能匹配小數點了。
其次,點不能寫在中括弧內,如果寫在中括弧內,依然只能匹配小數點。
所以,你應該把轉義符和中括弧去掉,點就能匹配任意字元了。
完整的Java程序如下:
packageday01;
publicclassTest001{
publicstaticvoidmain(String[]args){
Stringregex=".";
Stringstr="w";
System.out.println(str.matches(regex));
}
}
運行結果:
true
⑹ java正則表達式匹配數字後帶點的
java 正則匹配字元為數字後帶點的方法步驟:
第一步:定義正則表達式為:
String reg="[0-9.]"
第二步:獲取要判斷的字元串:
String str;//可以通過Scanner從控制台輸入,也可以用字元串常量進行初始化
第三步:調用字元串的matches方法判斷字元串為數字後面帶點的情況:
str.matches(reg);
如果是符合條件,返回為true,否則返回為false;