πΌ μ κ·ννμ μμ± λ°©λ² πΌ
μ κ· ννμ(Regular Expression) μ΄λ νΉμ ν κ·μΉμ κ°μ§ λ¬Έμμ΄μ μ§ν©μ νννκΈ° μν΄ μ°μ΄λ νμμΈμ΄ μ λλ€.
μλ° API java.util.regex ν¨ν€μ§λ₯Ό μ¬μ©ν΄μ μμ±ν μ μμ΅λλ€.
β¨Pattern ν΄λμ€
μ κ· ννμμ λμ λ¬Έμμ΄μ κ²μ¦νλ κΈ°λ₯μ java.util.regex.Pattern ν΄λμ€μ matches() λ©μλλ₯Ό νμ©νμ¬ κ²μ¦ν μ μμ΅λλ€. matches() λ©μλμ 첫λ²μ§Έ 맀κ°κ°μ μ κ·ννμμ΄κ³ λλ²μ§Έ 맀κ°κ°μ κ²μ¦ λμ λ¬Έμμ΄μ λλ€.
κ²μ¦ ν λμλ¬Έμμ΄μ΄ μ κ·ννμκ³Ό μΌμΉνλ©΄ true, κ·Έλ μ§ μλ€λ©΄ falseκ°μ 리ν΄ν©λλ€.
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
String pattern = "^[0-9]*$"; //μ«μλ§
String val = "123456789"; //λμλ¬Έμμ΄
boolean regex = Pattern.matches(pattern, val);
System.out.println(regex);
}
}
Pattern ν΄λμ€ μ£Όμ λ©μλ
compile(String regex) : μ£Όμ΄μ§ μ κ·ννμμΌλ‘λΆν° ν¨ν΄μ λ§λλλ€.
matcher(CharSequence input) : λμ λ¬Έμμ΄μ΄ ν¨ν΄κ³Ό μΌμΉν κ²½μ° trueλ₯Ό λ°νν©λλ€.
asPredicate() : λ¬Έμμ΄μ μΌμΉμν€λ λ° μ¬μ©ν μμλ μ μ΄λ₯Ό μμ±ν©λλ€.
pattern() : μ»΄νμΌλ μ κ·ννμμ String ννλ‘ λ°νν©λλ€.
split(CharSequence input) : λ¬Έμμ΄μ μ£Όμ΄μ§ μΈμκ° CharSequence ν¨ν΄μ λ°λΌ λΆλ¦¬ν©λλ€.
Parttern νλκ·Έ κ° μ¬μ©(μμ)
Pattern.CANON_EQ : Noneνμ€νλ λ§€μΉ λͺ¨λλ₯Ό νμ±νν©λλ€.
Pattern.CASE_INSENSITIVE : λμλ¬Έμλ₯Ό ꡬλΆνμ§ μμ΅λλ€.
Pattern.COMMENTS : 곡백과 #μΌλ‘ μμνλ μ£Όμμ΄ λ¬΄μλ©λλ€. (λΌμΈμ λκΉμ§).
Pattern.MULTILINE : μμ ‘^’ λ λΌμΈμ μμκ³Ό, ‘$’ λ λΌμΈμ λκ³Ό match λ©λλ€.
Pattern.DOTALL : μμ ‘.’κ³Ό λͺ¨λ λ¬Έμμ match λκ³ ‘\n’ λ match μ ν¬ν¨λ©λλ€.
Pattern.UNICODE_CASE : μ λμ½λλ₯Ό κΈ°μ€μΌλ‘ λμλ¬Έμ κ΅¬λΆ μμ΄ match μν΅λλ€.
Pattert.UNIX_LINES : μμ ‘.’ κ³Ό ‘^’ λ° ‘$’μ matchμμ ν λΌμΈμ λμ μλ―Ένλ ‘\n’λ§ μΈμλ©λλ€.
β¨Matcher ν΄λμ€
Matcher ν΄λμ€λ λμ λ¬Έμμ΄μ ν¨ν΄μ ν΄μνκ³ μ£Όμ΄μ§ ν¨ν΄κ³Ό μΌμΉνλμ§ νλ³ν λ μ£Όλ‘ μ¬μ©λ©λλ€.
Matcher ν΄λμ€μ μ λ ₯κ°μΌλ‘λ CharSequenceλΌλ μλ‘μ΄ μΈν°νμ΄μ€κ° μ¬μ©λλλ° μ΄λ₯Ό ν΅ν΄ λ€μν ννμ μ λ ₯ λ°μ΄ν°λ‘λΆν° λ¬Έμ λ¨μμ λ§€μΉ κΈ°λ₯μ μ§μ λ°μ μ μμ΅λλ€.
Matcherκ°μ²΄λ Patternκ°μ²΄μ matcher() λ©μλλ₯Ό νΈμΆνμ¬ λ°μμ¬ μ μμ΅λλ€.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("^[a-zA-Z]*$"); //μλ¬Έμλ§
String val = "abcdef"; //λμλ¬Έμμ΄
Matcher matcher = pattern.matcher(val);
System.out.println(matcher.find());
}
}
Matcher ν΄λμ€ μ£Όμ λ©μλ
matches() : λμ λ¬Έμμ΄κ³Ό ν¨ν΄μ΄ μΌμΉν κ²½μ° true λ°νν©λλ€.
find() : λμ λ¬Έμμ΄κ³Ό ν¨ν΄μ΄ μΌμΉνλ κ²½μ° trueλ₯Ό λ°ννκ³ , κ·Έ μμΉλ‘ μ΄λν©λλ€.
find(int start) : startμμΉ μ΄νλΆν° 맀μΉκ²μμ μνν©λλ€.
start() : 맀μΉλλ λ¬Έμμ΄ μμμμΉ λ°νν©λλ€.
start(int group) : μ§μ λ κ·Έλ£Ήμ΄ λ§€μΉλλ μμμμΉ λ°νν©λλ€.
end() : 맀μΉλλ λ¬Έμμ΄ λ λ€μ λ¬ΈμμμΉ λ°νν©λλ€.
end(int group) : μ§μ λ κ·Έλ£Ήμ΄ λ§€μΉλλ λ λ€μ λ¬ΈμμμΉ λ°νν©λλ€.
group() : 맀μΉλ λΆλΆμ λ°νν©λλ€.
group(int group) : 맀μΉλ λΆλΆμ€ groupλ² κ·Έλ£Ήν 맀μΉλΆλΆ λ°νν©λλ€.
groupCount() : ν¨ν΄λ΄ κ·Έλ£Ήνν(κ΄νΈμ§μ ) μ 체 κ°―μλ₯Ό λ°νν©λλ€.
β¨μ ν¨μ± κ²μ¬
μ κ· ννμμ μ ν¨μ± κ²μ¬ μ½λ μμ± μ κ°μ₯ ν¨μ¨μ μΈ λ°©λ²μ λλ€.
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
String name = "νκΈΈλ";
String tel = "010-1234-5678";
String email = "test@naver.com";
//μ ν¨μ± κ²μ¬
boolean name_check = Pattern.matches("^[κ°-ν£]*$", name);
boolean tel_check = Pattern.matches("^01(?:0|1|[6-9])-(?:\\d{3}|\\d{4})-\\d{4}$", tel);
boolean email_check = Pattern.matches("\\w+@\\w+\\.\\w+(\\.\\w+)?", email);
//μΆλ ₯
System.out.println("μ΄λ¦ : " + name_check);
System.out.println("μ νλ²νΈ : " + tel_check);
System.out.println("μ΄λ©μΌ : " + email_check);
}
}
μΆμ² : λ§ν¬
'κ°λ°μΈμ΄ > JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] Stack ν΄λμ€ μ€λͺ λ° μμ (1) | 2022.04.23 |
---|---|
[Java] HashMap (key κ° κ°μ Έμ€κΈ°) (0) | 2022.04.22 |
[Java] μλ° μ κ·ννμ λͺ¨μ (0) | 2022.04.18 |
[Java] λ λ μ§ μ¬μ΄μ λ μ§μΆλ ₯ (0) | 2022.04.12 |
[Java] SimpleDateFormat ν¨ν΄/μ¬μ©λ² (0) | 2022.04.12 |