다음이 일치해야합니다.
AAA123
ABCDEFGH123
XXXX123
내가 할 수있는 일 : ".*123"
?
답변
그래 넌 할수있어. 작동합니다.
.
= 어떤 문자\.
= 실제 도트 문자.?
=.{0,1}
= 모든 문자를 0 번 또는 1 번 일치.*
=.{0,}
= 모든 문자를 0 번 이상 일치.+
=.{1,}
= 모든 문자를 한 번 이상 일치
답변
예, 작동하지만 표현식을 컴파일 할 때 DOTALL 플래그 .
를 전달하지 않으면 개행과 일치하지 않습니다 .
Pattern pattern = Pattern.compile(".*123", Pattern.DOTALL);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.matches();
답변
패턴 .
을 사용하여 임의의 문자를 한 번 일치 시키고 , .*
임의의 문자를 0 번 이상 .+
일치시키고 , 임의의 문자를 1 회 이상 일치 시키십시오.
답변
정교한 정규식 테스트 및 개발 도구가 많이 있지만 Java로 간단한 테스트 하네스를 원한다면 다음과 같이 사용할 수 있습니다.
String[] tests = {
"AAA123",
"ABCDEFGH123",
"XXXX123",
"XYZ123ABC",
"123123",
"X123",
"123",
};
for (String test : tests) {
System.out.println(test + " " +test.matches(".+123"));
}
이제 새로운 테스트 케이스를 쉽게 추가하고 새로운 패턴을 시도 할 수 있습니다. 정규 표현식을 탐험하는 재미를 즐기십시오.
또한보십시오
답변
아니요, *
0 개 이상의 문자와 일치합니다. +
대신 하나 이상을 일치시키는을 사용해야 합니다.
이 표현은 당신에게 더 효과적 일 수 있습니다 : [A-Z]+123
답변
내가 이것을 인코딩하는 가장 일반적인 방법은 멤버가 가능한 모든 문자 세트의 파티션을 형성하는 문자 클래스를 사용하는 것입니다.
보통 사람들이 쓰기와 [\s\S]
생각 (공백 또는 공백이 아닌), [\w\W]
, [\d\D]
, 등 모든 작업을 할 것이다.
답변
.*
그리고.+
새로운 라인을 제외한 모든 문자에 대한 것입니다.
더블 이스케이프
줄 바꿈을 포함하려는 경우 Java 또는 C ++와 같이 이중 이스케이프가 필요한 언어에 대해 다음 표현식이 작동 할 수도 있습니다.
[\\s\\S]*
[\\d\\D]*
[\\w\\W]*
0 번 이상
[\\s\\S]+
[\\d\\D]+
[\\w\\W]+
한 번 이상.
단일 이스케이프 :
C #, PHP, Ruby, PERL, Python, JavaScript와 같은 일부 언어에는 이중 이스케이프가 필요하지 않습니다.
[\s\S]*
[\d\D]*
[\w\W]*
[\s\S]+
[\d\D]+
[\w\W]+
테스트
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegularExpression{
public static void main(String[] args){
final String regex_1 = "[\\s\\S]*";
final String regex_2 = "[\\d\\D]*";
final String regex_3 = "[\\w\\W]*";
final String string = "AAA123\n\t"
+ "ABCDEFGH123\n\t"
+ "XXXX123\n\t";
final Pattern pattern_1 = Pattern.compile(regex_1);
final Pattern pattern_2 = Pattern.compile(regex_2);
final Pattern pattern_3 = Pattern.compile(regex_3);
final Matcher matcher_1 = pattern_1.matcher(string);
final Matcher matcher_2 = pattern_2.matcher(string);
final Matcher matcher_3 = pattern_3.matcher(string);
if (matcher_1.find()) {
System.out.println("Full Match for Expression 1: " + matcher_1.group(0));
}
if (matcher_2.find()) {
System.out.println("Full Match for Expression 2: " + matcher_2.group(0));
}
if (matcher_3.find()) {
System.out.println("Full Match for Expression 3: " + matcher_3.group(0));
}
}
}
산출
Full Match for Expression 1: AAA123
ABCDEFGH123
XXXX123
Full Match for Expression 2: AAA123
ABCDEFGH123
XXXX123
Full Match for Expression 3: AAA123
ABCDEFGH123
XXXX123
표현식을 살펴보고 싶다면 regex101.com의 오른쪽 상단에 설명되어 있습니다. 원하는 경우이 링크 에서 일부 샘플 입력과 어떻게 일치하는지 확인할 수도 있습니다.
정규식 회로
jex.im은 정규 표현식을 시각화합니다.