안녕하세요, 저는 'a'또는 'A'로만 2 개의 문자로 단어를 일치시키는 정규식 명령을 찾고 있습니다. 단일 'a'는 괜찮지 만 단어에 3 개 이상 'a'가 서로 잘못 표시되어있을 때.Regex/Java. 'aa'시퀀스로 단어 일치하기
G AA SSCC - 좋은
EAAASCS - 나쁜
AAASD AA - 나쁜
ASBS AA - 좋은 당신은 적어도 3 A의에서 모든 단어를 필터링 할 수 있습니다
안녕하세요, 저는 'a'또는 'A'로만 2 개의 문자로 단어를 일치시키는 정규식 명령을 찾고 있습니다. 단일 'a'는 괜찮지 만 단어에 3 개 이상 'a'가 서로 잘못 표시되어있을 때.Regex/Java. 'aa'시퀀스로 단어 일치하기
G AA SSCC - 좋은
EAAASCS - 나쁜
AAASD AA - 나쁜
ASBS AA - 좋은 당신은 적어도 3 A의에서 모든 단어를 필터링 할 수 있습니다
각 단일 문자와 일치하기 전에 aaa
이 아닌지 확인하십시오. 이것은 부정적인 lookahead 어설 션을 통해 수행 될 수 있습니다.
String line[] = {"GAASSCC", "EAAASCS", "AAASDAA", "ASBSAA" };
for (String i : line)
if(i.matches("(?i)^(?:(?!aaa).)*?(?<!a)aa(?!a).*"))
{
System.out.println(i +" -> Good");
}
else
{
System.out.println(i +" -> Bad");
}
출력 :
GAASSCC -> Good
EAAASCS -> Bad
AAASDAA -> Bad
ASBSAA -> Good
설명 : 대소 문자를 구별 수정이라고
(?i)
. 이것은 대문자와 소문자를 모두 일치시키는 정규 표현식을 만듭니다.
^
우리가 시작했음을 주장합니다.
(?:(?!aaa).)*?
여기 까다로운 부분이 있습니다. 처음에 aaa
이 아닌지 확인합니다. a
에 두 개의 문자가 뒤 따르지 않으면 해당 문자 만 일치합니다.
(?<!a)
이것은 우리가 일치하고자하는 문자열이 주장 a
aa
문자열을 aa
(?!a)
부정적 예측과 일치하는 문자가 선행되지 않습니다 주장 그 경기는하지 않습니다 그 다음에 문자가 올 수 있습니다 a
이 행 :
\b\w*[aA]{3,}\w*\b
설명 :
\b
: 단어 경계입니다. 기본적으로 단어의 시작 또는 끝.
\w*
: 임의의 문자 수. 그래서 0 개 이상.
[aA]
는하십시오 또는 A 중 하나는
{3,}
: 세 번 이상 선행 요소 ([aA]
)
그래서이 임의의 수에 의해 둘러싸인 행에 적어도 세 A의있는 모든 단어를 찾아 다른 편지.
그런 다음 하나 또는 두 개의 A가 포함 된 단어를 순서대로 찾으려면 위의 내용을 \b\w*[aA]{1, 2}\w*\b
개로 수정할 수 있습니다. 사실 3 개 이상의 A가있는 단어를 이미 필터링했기 때문에 \b\w*[aA]+\w*\b
을 사용할 수도 있습니다.
아마도 이것이 작동합니다.
[^aA]*[aA]{2}[^aA]*