字元串匹配java
⑴ java正則表達式如何獲取字元串中所有匹配內容
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]
JS如何用正則表達式 獲取字元串內的匹配部份?
實現的效果:在字元串中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時,才可以使用。
C# 正則表達式獲取字元串?
針對你的問題:
<aa>是給數組命名
(?<name>subexpression)
其中name是有效的組名稱,而subexpression是任何有效的正則表達式模式。 name不得包含任何標點符號字元,並且不能以數字開頭。
這個方式相當於下面這個表達式
"(?<!0-9a-zA-Z)([0-9]|[a-z]|[A-Z]){1,}"
java正則表達式如何獲取分組匹配內容
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 ());
}
}
Java正則表達式匹配是否存在字元串。
正則表達式為:.*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字元串匹配
按LS所說的確可以。要是一定要用String的話可以用
String[] s;
for(String ss:s)
if(ss.contains("貿易"))
System.out.println(ss);
這樣的方法。
⑶ JAVA如何用正則表達式完成字元串的匹配
String str="111.111.222.1"; //你要匹配的字元串
String regex = "\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}";//正則表達式
if (str.matches(regex)) {//字元串 滿足條件
}
⑷ java中怎麼匹配字元串
匹配方式(其中每個方式對應RegUtil.java中的一個方法)代碼:
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegUtil {
/**
* 方式一:基本正則表達式實現
* @param str
* @param reg
* @return
*/
public static boolean matchMatcher(String str,String reg){
Pattern pattern =Pattern.compile(reg);
Matcher matcher=pattern.matcher(str);
return matcher.matches();
}
/**
* 方式二:利用Pattern自帶實現
* @param str
* @param reg
* @return
*/
public static boolean matchPattern(String str,String reg){
return Pattern.matches(reg, str);
}
/**
* 方式三:String自帶實現
* @param str
* @param reg
* @return
*/
public static boolean matchStr(String str,String reg){
return str.matches(reg);
}
}
對應單元測試代碼如下:
package test;
import org.junit.Assert;
import org.junit.Test;
public class TestReg {
@Test
public void testParttern(){
Assert.assertTrue(RegUtil.matchMatcher("123", "//d+"));
Assert.assertTrue(RegUtil.matchPattern("123", "//d+"));
Assert.assertTrue(RegUtil.matchStr("123", "//d+"));
}
}
⑸ java中字元串匹配的方法有哪些,返回值要true或false的
String.equals();方法是判斷兩個字元串是否內容一樣,所以不算是匹配。在String類中有一個String.matches()方法,是判斷此字元串是否匹配給定的正則表達式,不過用這個方法你要先會用正則表達式。
⑹ 字元串的匹配(JAVA)
這個是完整的代碼;由於不了解你的需求,所以寫了兩種情況的
publicclassMain{
publicstaticvoidmain(Stringinfos[]){
//如果僅僅是字元串在另一個字元串中出現的位置的話,下面的可以
Strings1="abcisfromjenice";
Strings2="je";
intindex=s1.indexOf(s2);
System.out.println("s2在s1中的位置為:"+index);
//如果是字元串在出現的多個單詞中的位置的話,用下面代碼
Strings3="abcisfromjenice";
Strings4="je";
String[]array=s3.split("");
for(inti=1;i<=array.length;i++){
if(s4.equals(array[i-1])){
System.out.println("s2在s1中的位置為:"+i);
break;
}
}
}
}
⑺ java 通配符匹配字元串
第一步實現含?而不含*的 字元串匹配,如對dd?的匹配
第二步,實現含有* 的字元串的匹配,如abc* dd?,主要思路是用* split 字元串,分為兩個有效的串,abc, dd?
然後使用步驟一種的方法來查看匹配到的index.
/**
* 找出含?的字元串
* @return
*/
public int checkSubPattern(String src,int begin,String pat){
boolean isFound=true;
if(src.length()-begin < pat.length()){return -1;}
for(int i=begin;i<src.length()-pat.length()+1;i++){
for(int j=0;j<pat.length();j++){
if(pat.charAt(j)!='?' && src.charAt(i+j)!=pat.charAt(j)){
isFound =false;
break;
}
isFound = true;
}
if(isFound){return i;}
}
return -1;
}
public boolean checkStar(String src,String pat){
String[] sub_p = pat.split("\\*");
int begin =0;
for(int i=0;i< sub_p.length;i++){
begin = checkSubPattern(src,begin,sub_p[i]);
System.out.println(begin);
if(begin==-1){return false;}
if(i==0 && pat.charAt(i)!='*' &&begin!=0){return false;}
if((i==sub_p.length-1) && pat.charAt(i)!='*'
&&begin!=(src.length()-
sub_p[i].length())){return false;}
}
return true;
}