java正則任意字元
㈠ java正則表達式的寫法
"n\\sSBV\\sa ADV\\sd"
㈡ 正則表達式怎樣匹配任意字元
在正則中,匹配任意字元,其實寫法網上有很多,但因為各種軟體或程序寫法不支持等原因導致的問題,大家可以多研究。
今天在Java中想使用正則表達式來獲取一段文本中的任意字元。於是很隨意得就寫出如下匹配規則:
(.*)
結果運行之後才發現,無法獲得換行之後的文本。於是查了一下手冊,才發現正則表達式中,「.」(點符號)匹配的是除了換行符「\n」以外的所有字元。同時,手冊上還有一句話:要匹配包括
'\n' 在內的任何字元,請使用像 '[.\n]' 的模式。於是我將正則表達式的匹配規則修改如下:
([.\n]*),當然,如果是在java程序中直接寫到話,需要改為([.\\n]*)
結果再次運行程序,發現什麼內容也取不到了。我百思不得其解,又將其修改為如下規則:
([.|\n]*) 以及 ([\n.]*)
結果還是不行,什罩雹卜么內容都取不到。看來點符號和換行符卯上勁了~
然後上網一查,雖然沒有查出上述規則到底是什麼地方出問題了,但是查出了一個解決辦法,經過一試,果然可以匹配包括換行符在內的任意字元,以下為正確的正則表達式匹配規則:
([\s\S]*)
同時,也可以用 「([\d\D]*)」、「([\w\W]*)」 來表示。
在文本文件里,
這個表達式可以匹配所有的英文
/肆脊[ -~]/
這個表達式物穗可以匹配所有的非英文(比如中文)
/[^ -~]/
/是VI里用的.
你在editplus或程序里不需要/
㈢ 正則表達式怎樣匹配任意字元
匹配任意字元[sS]* 或者 [wW]*
㈣ java正則表達式中的 . 表示匹配任意字元,為什麼我這個不對呢
首先,點前面不能有轉義符 ,如果有轉義符點就只能匹配小數點了。
其次,點不能寫在中括弧內,如果寫在中枯豎告括弧內,依然只能匹配小數點。
所以,你應該把轉義符纖逗和中括弧去掉,點就能匹配任意字元了。
完整的Java程序如下:
packageday01;
publicclassTest001{
publicstaticvoidmain(String[]args){
Stringregex=".";
String沒明str="w";
System.out.println(str.matches(regex));
}
}
運行結果:
true
㈤ java正則表達式是什麼
java正則表達式是計算機科學的一個概念。正則表達式使用單個字元串來描述、匹配一系列符合某個句法規則的字元串。
在編寫處理字元串的程序或網頁時,經常會有查找符合某些復雜規則的字元串的需要。正則表達式就是用於描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。
很可能你使用過Windows/Dos下用於文件查找的通配符(wildcard),也就是*和?。如果你想查找某個目錄下的所有的Word文檔的話,你會搜索*.doc。在這里,*會被解釋成任意的字元串。
和通配符類似,正則表達式也是用來進行文本匹配的工具,只不過比起通配符,它能更精確地描述你的需求——當然,代價就是更復雜——比如你可以編寫一個正則表達式,用來查找所有以0開頭,後面跟著2-3個數字,然後是一個連字型大小「-」,最後是7或8位數字的字元串(像010-12345678或0376-7654321)。
正則表達式的基本操作:
正則表達式定義:符合一定規則的表達式。
作用:用於專門操作字元串。
特點:用於一些特定的符號來表示一些代碼操作。這樣就簡化書寫。所以學習正則表達式,就是在學習一些特殊符號的使用。
好處:可以簡化對字元串的復雜操作。
弊端:符號定義越多,正則越長,閱讀性越差。
㈥ java求一個簡單的正則表達式:以@開頭,中間可以是任意字元除了『\』,重復1到20遍,以空格或者@結束
//已修改!
//匹配@xxx,長度為舉旁1-20。
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatcherDemo {
private static String regex = "@[^\\\\亮答攜@ ]{1,20}";
private static Pattern pattern = Pattern.compile(regex);
public static void main(String[] args) throws Exception {
printNames(matcherNames("@aaaaa@cccccc"));;
printNames(matcherNames("@bbbb @dddddd"));
}
private static String[] matcherNames(String input) {
List<String> list = new ArrayList();
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
list.add(matcher.group());
}
return list.toArray(new String[0]);
}
private static void printNames(String[] names) {
System.out.printf("共匹配到%s個用戶:\n", names.length);
for (int i = 0; i < names.length; i++) {
System.out.printf("用戶%s是:%s\敬伏n", i + 1, names[i]);
}
}
}
㈦ 求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"中沒有包含任何元字元,它可以匹配"java"和"javascript"等字元串,但是不能匹配"Java"。
正則表達式不僅能進行字元串的匹配,還能進行字元串的提取、替換。
示例代碼:
String regEx = ".+/(.+)$";
String str = "D:/java/test.txt";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
if (!m.find()){
System.out.println("文件路徑格式錯誤!");
return;
}
System.out.println(m.group(1));
運行結果:test.txt
正則表達式「.+/(.+)$」的含義就是:被匹配的字元串以任意字元序列開始,後邊緊跟著字元「/」,最後以任意字元序列結尾,「()」代表分組操作,這里就是把文件名做為分組,匹配完畢就可以通過Matcher 類的group方法取到所定義的分組了。需要注意的這里的分組的索引值是從1開始的,所以取第一個分組的方法是m.group(1)而不是m.group(0)。
㈨ JAVA正則表達式獲取特定的字元串
^ 和 $ 他們是分別用來匹配字元串的開始和結束,以下分別舉例說明:
"^The": 開頭一定要有"The"字元串;
"of despair$": 結尾一定要有"of despair" 的字元串;
那麼,
"^abc$": 就是要求以abc開頭和以abc結尾的字元串,實際上是只有abc匹配。
"notice": 匹配包含notice的字元串。
你可以看見如果你沒有用我們提到的兩個字元(最後一個例子),就是說 模式(正則表達式) 可以出現在被檢驗字元串的任何地方,你沒有把他鎖定到兩邊。
接著,說說 '*', '+',和 '?',
他們用來表示一個字元可以出現的次數或者順序. 他們分別表示:
"zero or more"相當於{0,},
"one or more"相當於{1,},
"zero or one."相當於{0,1}, 這里是一些例子:
"ab*": 和ab{0,}同義,匹配以a開頭,後面可以接0個或者N個b組成的字元串("a", "ab", "abbb", 等);
"ab+": 和ab{1,}同義,同上條一樣,但最少要有一個b存在 ("ab", "abbb", 等.);
"ab?":和ab{0,1}同義,可以沒有或者只有一個b;
"a?b+$": 匹配以一個或者0個a再加上一個以上的b結尾的字元串.
要點, '*', '+',和 '?'只管它前面那個字元.
你也可以在大括弧裡面限制字元出現的個數,比如
"ab{2}": 要求a後面一定要跟兩個b(一個也不能少)("abb");
"ab{2,}": 要求a後面一定要有兩個或者兩個以上b(如"abb", "abbbb", 等.);
"ab{3,5}": 要求a後面可以有2-5個b("abbb", "abbbb", or "abbbbb").
現在我們把一定幾個字元放到小括弧里,比如:
"a(bc)*": 匹配 a 後面跟0個或者一個"bc";
"a(bc){1,5}": 一個到5個 "bc."
還有一個字元 '│', 相當於OR 操作:
"hi│hello": 匹配含有"hi" 或者 "hello" 的 字元串;
"(b│cd)ef": 匹配含有 "bef" 或者 "cdef"的字元串;
"(a│b)*c": 匹配含有這樣多個(包括0個)a或b,後面跟一個c的字元串;
一個點('.')可以代表所有的單一字元,不包括"\n"
如果,要匹配包括"\n"在內的所有單個字元,怎麼辦?
對了,用'[\n.]'這種模式.
"a.[0-9]": 一個a加一個字元再加一個0到9的數字
"^.{3}$": 三個任意字元結尾 .
中括弧括住的內容只匹配一個單一的字元
"[ab]": 匹配單個的 a 或者 b ( 和 "a│b" 一樣);
"[a-d]": 匹配'a' 到'd'的單個字元 (和"a│b│c│d" 還有 "[abcd]"效果一樣); 一般我們都用[a-zA-Z]來指定字元為一個大小寫英文
"^[a-zA-Z]": 匹配以大小寫字母開頭的字元串
"[0-9]%": 匹配含有 形如 x% 的字元串
",[a-zA-Z0-9]$": 匹配以逗號再加一個數字或字母結尾的字元串
你也可以把你不想要得字元列在中括弧里,你只需要在總括弧裡面使用'^' 作為開頭 "%[^a-zA-Z]%" 匹配含有兩個百分號裡面有一個非字母的字元串.
要點:^用在中括弧開頭的時候,就表示排除括弧里的字元。為了PHP能夠解釋,你必須在這些字元面前後加'',並且將一些字元轉義.
㈩ java有關正則表達式,我想匹配一個字元串中的任意字元,怎麼辦
"\."是被轉意了的,是要匹歷圓配一個「點」,不者鏈用加「\\」,直接用「."就首爛孫可以了