본문 바로가기
개발/TOOLS

자바 정규식 만들기 쉽게 하는 법 AI 구글 바드

by 꿈트리꿈트리 2023. 5. 18.

갑자기 문자열을 이용해 패턴이나 포함된 패턴을 찾아 내야 하는 문제가 생겼다.

정규식을 아예 하나도 모르는건 아니였지만 다 외우고 있지는 않는데

이걸 정규식을 배워서 테스트 하며 검증을 해야 하나 싶었지만 문득 요즘 핫한 AI를 이용해 보기로 했다

 

결론부터 말씀 드리자면 한 20여번의 질문을 했지만 제가 원하는 결과를 얻지는 못했네요

간단한 패턴을 찾는데는 유용한데 제가 원하는게 복잡한거였는지 잘 만들어 주지 못하네요

소통의 문제일수도 있고 암튼 기초적인 내용은 문답을 하면서 도움이 될거 같고 복잡한건 질문을 하기가 애매하네요

 

chatGPT를 전에 약간 재미로 사용해 본적 있지만 대통령도 못 맞추고 느려서

요즘 새로 서비스를 했다는 구글 바드를 사용해 보았다

 

https://bard.google.com/

 

Bard

Bard is your creative and helpful collaborator to supercharge your imagination, boost productivity, and bring ideas to life.

bard.google.com

아직은 테스트 중인거 같은데

간단한 동의 후 바로 사용 할 수 있었다.

 

자바로 정규식 만들어줘란 질문에

위 질문에 아래와 같은 답을 

자바에서 정규식은 `Pattern` 클래스와 `Matcher` 클래스를 사용하여 사용할 수 있습니다. `Pattern` 클래스는 정규식을 컴파일하고 `Matcher` 클래스는 정규식과 일치하는 문자열을 검색하는 데 사용됩니다.

다음은 정규식을 컴파일하는 예입니다.

```
Pattern pattern = Pattern.compile("^[a-zA-Z0-9]+$");
```

이 정규식은 영어 알파벳 소문자 또는 대문자 또는 숫자만 포함하는 문자열과 일치합니다.

다음은 정규식과 일치하는 문자열을 검색하는 예입니다.

```
Matcher matcher = pattern.matcher("Hello World");

if (matcher.matches()) {
  System.out.println("The string matches the pattern.");
} else {
  System.out.println("The string does not match the pattern.");
}
```

이 코드는 "Hello World" 문자열이 정규식과 일치하기 때문에 "The string matches the pattern."을 인쇄합니다.

자바에서 정규식을 사용하여 문자열을 수정할 수도 있습니다. 다음은 정규식을 사용하여 문자열을 수정하는 예입니다.

```
String newString = matcher.replaceAll("Hello");

System.out.println(newString);
```

이 코드는 "World" 문자열에서 "Hello"를 "World"로 바꾸어 "World"를 인쇄합니다.

도움이 되었기를 바랍니다!

 

위와 같은 답변을 해 주었다 

그래서 내가 필요한 질문을 좀더 디테일 하게 해 보았다

 

6자이상 8자 이하 이면서 앞에 두자리는 00 이고 뒤에 문자중에 영문이 들어가있는지 확인하는 정규식 만들어줘

네, 여기 6자 이상 8자 이하 이면서 앞에 두자리는 00 이고 뒤에 문자중에 영문이 들어가있는지 확인하는 정규식은 다음과 같습니다.

코드 스니펫
^00[a-zA-Z]{4,6}$
코드를 사용할 때는 주의하시기 바랍니다. 자세히 알아보기
content_copy
이 정규식은 다음과 같은 문자열을 일치시킵니다.

00ABC
00DEFG
00HIJKL
00MNOPQ
00RSTUV
00WXYZ
그러나 다음과 같은 문자열은 일치시키지 않습니다.

00
00123
00ABCDE
00FGHIJKLM
00NOPQRSTUVWXYZ
0123456789
이 정규식의 작동 방식은 다음과 같습니다.

^는 문자열의 시작을 의미합니다.
00은 문자열의 처음 두 자리가 00인지 확인합니다.
[a-zA-Z]는 문자열의 나머지 부분이 영문자로 구성되어 있는지 확인합니다.
{4,6}는 문자열의 길이가 4에서 6 사이인지 확인합니다.
$는 문자열의 끝을 의미합니다.
도움이 되었기를 바랍니다!

 

요기까지가 답변인데

나름 만족 스럽다 그러나 000a0000 이런것도 찾아 내야 하는데

저의 질문엔 뒤에 4~6자 영문으로 인식한거 같다

 

네, 다음은 6자 이상 8자 이하이면서 앞에 두자리는 00이고 뒤에 문자가 영어로 포함되어 있는지 확인하는 정규식입니다.
코드 스니펫
^00[a-zA-Z]+$
코드를 사용할 때는 주의하시기 바랍니다. 자세히 알아보기
content_copy
이 정규식은 다음과 같은 문자열을 일치시킵니다.

00ABC
00DEFG
00HIJKL
00MNOPQ
00RSTUV
00WXYZ
00ABc
00DeF
00HiJk
00MnOp
00RsTu
00Wxyz
그러나 다음과 같은 문자열은 일치시키지 않습니다.

00
00123
00ABCDE
00FGHIJKLM
00NOPQRSTUVWXYZ
0123456789
이 정규식의 작동 방식은 다음과 같습니다.

^는 문자열의 시작을 의미합니다.
00은 문자열의 처음 두 자리가 00인지 확인합니다.
[a-zA-Z]는 문자열의 나머지 부분이 영문자로 구성되어 있는지 확인합니다.
+는 문자열에 최소 1개의 영어 문자가 있는지 확인합니다.
$는 문자열의 끝을 의미합니다.

 

세번째 자리부터는 영문만 포함되고 숫자도 들어가도 되는데 나의 질문을 정확하게 이해하지 못하는거 같다

소통이 문제인거 같다

00234567a

이런 문자열도 검증하기 위해 질문을 고심해 본다

 

 

 6자이상 8자 이하 이면서 앞에 두자리는 00 이고 뒤에 문자중에 하나 이상의  영문이 포함되어 있는지 확인하는 정규식 만들어줘

 ^00[a-zA-Z]{1,7}$

 

 총 문자열은 6자이상 8자 이하 이면서 앞에 두자리는 00 이고 나머지 문자는 숫자나 영문 이고 영문은 하나이상 들어가야 한다

^00[a-zA-Z0-9]{4,6}$

흠 일단 제가 원하는 대로는 쉽게 안 만들어 주네요

 

그냥 공부해서 써야겠네요.