programing

정규 표현에서 "any character"를 일치시키는 방법은 무엇입니까?

copyandpastes 2022. 7. 17. 22:21
반응형

정규 표현에서 "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 회선

jex.im 는 정규 표현을 시각화합니다.

여기에 이미지 설명 입력

많은 정교한 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$.

질문에 대한 일반적인 해결책(정규 표현에서 "임의의 문자"를 일치시키는 방법):

  1. 공백 등 필요한 것이 있으면 시도해 보십시오.[\w|\W]{min_char_to_match,}.
  2. 공백 이외의 것을 조합하는 경우는, 다음의 순서를 시험해 주세요.[\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

반응형