정규 표현에서 "any character"를 일치시키는 방법은 무엇입니까?
다음 사항이 일치해야 합니다.
AAA123
ABCDEFGH123
XXXX123
수 있는 일:".*123"
네, 가능합니다.그러면 되겠군요.
.
= 줄바꿈을 제외한 모든 문자\.
= 도트 문자 = character character도도 도문= =문=.?
=.{0,1}
= 0 1회 에는 아무 = 줄바꿈 0 또는 1회만 일치합니다..*
=.{0,}
= = 줄바꿈 0회 이상 = 줄바꿈 0회 이상 = 줄바꿈 0회 이상 = 줄바꿈 0회 이상 = 줄바꿈 0회 이상 = 줄바꿈 0회 이상 = 줄바꿈 0회 이상 = 줄바꿈 0회 이상 = 없음.+
=.{1,}
= 이외의 = 줄바꿈 이외의 문자를 1회 이상 일치시킵니다.
잘 될 예요. 단, ,, 작, 해, 세, 세, 세, 세, 세, 세, 세, that, that, that, that, that..
는 식을 컴파일할 때 DOTALL 플래그를 전달하지 않으면 줄바꿈과 일치하지 않습니다.
Pattern pattern = Pattern.compile(".*123", Pattern.DOTALL);
Matcher matcher = pattern.matcher(inputStr);
boolean matchFound = matcher.matches();
을 .
의 1회 시키려면 , 「 」.*
시키려면 0회 이상 일치해야 합니다..+
을 사용하다
이것을 부호화하는 가장 일반적인 방법은 구성원들이 가능한 모든 문자 집합의 파티션을 형성하는 문자 클래스를 사용하는 것입니다.
그렇게 .[\s\S]
또는 단, (스페이스 또는 비스페이스),[\w\W]
,[\d\D]
될 것 요.
.*
★★★★★★★★★★★★★★★★★」.+
새 줄을 제외한 모든 문자를 위한 것입니다.
더블 이스케이프
만약의 경우에 대비하여 다음 표현은 Java 또는 C++와 같이 이중 이스케이프가 필요한 언어에도 사용할 수 있습니다.
[\\s\\S]*
[\\d\\D]*
[\\w\\W]*
0회 이상 또는
[\\s\\S]+
[\\d\\D]+
[\\w\\W]+
1회 또는 여러 번.
단일 이스케이프:
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의 오른쪽 상단 패널에 설명되어 있습니다.원하는 경우 이 링크에서 샘플 입력과 일치하는 방법을 볼 수도 있습니다.
RegEx 회선
많은 정교한 regex 테스트 및 개발 툴이 있지만 Java에서 간단한 테스트 하니스를 원한다면 다음과 같은 툴을 사용해 보십시오.
String[] tests = {
"AAA123",
"ABCDEFGH123",
"XXXX123",
"XYZ123ABC",
"123123",
"X123",
"123",
};
for (String test : tests) {
System.out.println(test + " " +test.matches(".+123"));
}
이제 새로운 테스트 케이스를 쉽게 추가하고 새로운 패턴을 시도할 수 있습니다.regex 탐사를 즐겨라.
「 」를 참조해 주세요.
아요 no요 。*
0의 하면 됩니다.+
1번으로 하겠습니다.
더 잘 도 있어요.[A-Z]+123
이 문제에 대한 구체적인 해결 방법:
★★를 해 보세요.[A-Z]*123$
123
,AAA123
,ASDFRRF123
적어도 캐릭터가 필요한 경우123
사용하다[A-Z]+123$
.
질문에 대한 일반적인 해결책(정규 표현에서 "임의의 문자"를 일치시키는 방법):
- 공백 등 필요한 것이 있으면 시도해 보십시오.
[\w|\W]{min_char_to_match,}
. - 공백 이외의 것을 조합하는 경우는, 다음의 순서를 시험해 주세요.
[\S]{min_char_to_match,}
.
regex를 시험해 보다.{3,}
새 줄을 제외한 모든 문자와 일치합니다.
[^]
는, 줄바꿈을 포함한 임의의 문자와 일치할 필요가 있습니다. [^
문자]
는 CHARS 내의 문자를 제외한 모든 문자와 일치합니다.CHARS가 비어 있으면 모든 문자와 일치합니다.
JavaScript의 예:
/a[^]*Z/.test("abcxyz \0\r\n\t012789ABCXYZ") // Returns ‘true’.
항상 점은 아무 문자도 의미하지 않습니다.싱글 라인 모드의 경우는 예외입니다. \p{all}
그래야 한다
String value = "|°¬<>!\"#$%&/()=?'\\¡¿/*-+_@[]^^{}";
String expression = "[a-zA-Z0-9\\p{all}]{0,50}";
if(value.matches(expression)){
System.out.println("true");
} else {
System.out.println("false");
}
언급URL : https://stackoverflow.com/questions/2912894/how-to-match-any-character-in-regular-expression
'programing' 카테고리의 다른 글
기본 Vue 인스턴스, Vuex 또는 mixin을 사용할 시기를 선택하십시오. (0) | 2022.07.17 |
---|---|
C는 왜 이렇게 빠를까요?다른 언어는 왜 그렇게 빠르거나 빠르지 않을까요? (0) | 2022.07.17 |
Vue 라우터는 초기 로딩 시 항상 느리게 로드된 모듈을 로드합니다. (0) | 2022.07.17 |
비정상적인 리다이렉트 (0) | 2022.07.17 |
Vuex 및 Axios를 사용한 Vuej에서의 오류 처리의 베스트 프랙티스 (0) | 2022.07.17 |