JAVA 제6 5 과 정규 표현 식 학습
예:
QQ 번호 검사
6 ~ 9 자리, 0 은 시작 할 수 없고 숫자 여야 합 니 다.
String 클래스 에 matches 방법 이 있 습 니 다.
matches(String regex)
이 문자열 이 주어진 정규 표현 식 과 일치 하 는 지 알려 줍 니 다.regex,
public static void checkQQ() {
// 1-9, 0-9, 5 8
String regex = "[1-9][0-9]{5,8}";//
String qq = "123459";
boolean flag = qq.matches(regex);
System.out.println(qq+" : "+flag);
}
PS: ,
。
.
( )
\d
:[0-9]
\D
: [^0-9]
\s
:[ \t
\x0B\f\r]
\S
:[^\s]
\w
:[a-zA-Z_0-9]
\W
:[^\w]
[abc]
a、b c( )
[^abc]
, a、b c( )
[a-zA-Z]
a z A Z, ( )
[a-d[m-p]]
a d m p:[a-dm-p]( )
[a-z&&[def]]
d、e f( )
[a-z&&[^bc]]
a z, b c:[ad-z]( )
[a-z&&[^m-p]]
a z, m p:[a-lq-z]( )
^
$
\b
\B
\A
\G
\Z
, ( )
\z
Greedy
X?
X,
X*
X,
X+
X,
X{n}
X, n
X{n,}
X, n
X{n,m}
X, n , m
Logical
XY
X Y
X|Y
X Y
(X)
X,
Back
\n
nth
public static void check() {
<span style="white-space:pre"> </span>
String string = "aoooooz";
String regex = "ao{4,}z";//
boolean flag = string.matches(regex);
System.out.println(string+" : "+flag);
}
1. 2. 3. 4.
: String matches
public static void check() {
//
String tel = "18753377511";
// 1, 3 5 8
//String regex = "1[358][0-9]{9}";
String regex = "1[358]\\d{9}";
// \, , "\" "\"
boolean flag = tel.matches(regex);
System.out.println(tel+" : "+flag);
}
: String split(String regex) , " ", ,
public static void check() {
// , ,
String str = "a b c d e f";
String regex = " +";// 1
String[] line = str.split(regex);
for(String i : line){
System.out.println(i);
}
}
,PS:
String str = "a.b.c.d.e..f";
String regex = "\\.+";//\. ., \
String[] line = str.split(regex);
()
,. ,(.) ,(.)\\1,
String str = "a@@@b####c...dtttef";
String regex = "(.)\\1+";//
String[] line = str.split(regex);
:((A)(B(C))), ,
,
((A)(B(C))) 1
(A) 2
(B(C)) 3
(C) 4
0
:
replaceAll(String regex,String replacement)
주어진 replacement 을 사용 하여 주어진 정규 표현 식 과 일치 하 는 모든 하위 문자열 을 대체 합 니 다.replaceFirst(String regex,String replacement)
주어진 replacement 을 사용 하여 주어진 정규 표현 식 과 일치 하 는 첫 번 째 문자열 을 대체 합 니 다.
public static void check() {
//
String str = "abgggggcffffdggggs";
String regex = "(.)\\1+";//
str = str.replaceAll(regex, "$1");
System.out.println(str);
}
PS: 달러 기 호 는 다른 매개 변수 에서 이전 매개 변수 에 있 는 정규 규칙 을 가 져 올 수 있 습 니 다. public static void check() {
//18753377511 -> 187****7511
String str = "18753377511";
String regex = "(\\d{3})\\d{4}(\\d{4})";
System.out.println(str);
str = str.replaceAll(regex, "$1****$2");
System.out.println(str);
}
획득
정규 자체 가 하나의 대상 이다
패턴 류
문자열 로 지정 한 정규 표현 식 은 먼저 이러한 인 스 턴 스 로 컴 파일 되 어야 합 니 다.그 다음 에 얻 은 모델 을 Matcher
대상 을 만 드 는 데 사용 할 수 있 습 니 다. 정규 표현 식 에 따라 이 대상 은 임 의 。 , 。
//
//Pattern p = Pattern.compile("a*b");
// matcher , Matcer
//Matcher m = p.matcher("aaaab");
// Matcher
//boolean b = m.matches();
Matcher
-
matches
방법 으로 전체 입력 서열 을 이 모델 과 일치 시 키 려 고 시도 할 수 있 습 니 다.
-
lookingAt
입력 시퀀스 를 처음부터 이 모드 와 일치 시 키 려 고 시도 합 니 다. -
find
방법 은 입력 시퀀스 를 스 캔 하여 이 모드 와 일치 하 는 다음 하위 시퀀스 를 찾 습 니 다.
public static void check() {
String str = "ni hao,wohao,ta ye hao";
String regex = "\\b[a-z]{3}\\b";//\\b :
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
while(m.find())// , , ,
{
System.out.println(m.group());
System.out.println(m.start()+" : "+m.end());//
}
}
연습:
aa.. aa. aa.. bb. b. bb. ccc.. ccc 를 abcd 로 변경 합 니 다.public static void test() {
String str = "aaa...aa..aaa...bbb...b...bbb...ccc...ccc";
System.out.println(str);
String regex = "\\.+";
str = str.replaceAll(regex, "");//
regex = "(.)\\1+";
str = str.replaceAll(regex, "$1");//
System.out.println(str);
}
정렬 IP 주소public static void test() {
// String str = "192.0.0.1 127.0.0.24 3.3.3.5 150.15.3.41";
// System.out.println("ip : "+str);
// String regex = " +";
// String[] strs = str.split(regex);
//
// TreeSet<String> ts = new TreeSet<String>();//
// for(String s : strs){
// ts.add(s);
// }
// for(String s : ts){// ,
// System.out.println(s);
// }
// ip , 0
String str = "192.0.0.1 127.0.0.24 3.3.3.5 150.15.3.41";
String regex = "(\\d+)";
str = str.replaceAll(regex, "00$1");
System.out.println(" 0 : "+str);
regex = "0*(\\d{3})";
str = str.replaceAll(regex, "$1");
System.out.println(" 3 : "+str);
regex = " +";
String[] strs = str.split(regex);
TreeSet<String> ts = new TreeSet<String>();//
for(String s : strs){
ts.add(s);
}
for(String s : ts){
System.out.println(s.replaceAll("0*(\\d+)", "$1"));
}
}
메 일 주소 의 간단 한 검사public static void test() {
String mail = "[email protected]";
String regex = "\\w+@\\w+(\\.[a-zA-Z]{2,3})+";//+
boolean flag = mail.matches(regex);
System.out.println(mail+" : "+flag);
}
주의: 개발 시 정규 독해 성 이 떨 어 지 므 로 끊임없이 검증 한 후 포장 합 니 다.
연습: 웹 파충류: 인터넷 에서 지정 한 규칙 에 맞 는 데 이 터 를 가 져 오 는 프로그램
메 일 주 소 를 찾다.public class asd {
public static void main(String[] args) throws Exception {
//List<String> list = getmail();//
List<String> list = getweb();//
for(String i : list){
System.out.println(i);
}
}
public static List<String> getweb() throws Exception{
//URL url = new URL("http://192.168.0.1:8080/myweb/mymail.html");
URL url = new URL("http://news.baidu.com/");
BufferedReader brin = new BufferedReader(new InputStreamReader(url.openStream()));
String mail_regex = "\\w+@\\w+(\\.\\w+)+";
Pattern p = Pattern.compile(mail_regex);
List<String> list = new ArrayList<String>();
String line = null;
while((line = brin.readLine())!=null){
Matcher m = p.matcher(line);
while(m.find()){
list.add(m.group());
}
}
return list;
}
public static List<String> getmail() throws Exception {
//1.
BufferedReader br = new BufferedReader(new FileReader("g:\\mymail.html"));
String mail_regex = "\\w+@\\w+(\\.\\w)+";
Pattern p = Pattern.compile(mail_regex);
List<String> list = new ArrayList<String>();
String line = null;
//2. ,
while((line = br.readLine())!=null){
Matcher m = p.matcher(line);
while(m.find()){
//3.
list.add(m.group());
}
}
return list;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.