반응형
Go에서 대소 문자를 구분하지 않는 정규식을 어떻게 수행합니까?
이제,와 같은 두 경우를 모두 처리하는 정규식을 사용할 수 regexp.Compile("[a-zA-Z]")
있습니다. 정규식은 사용자가 많은 경우 구성됩니다.
reg, err := regexp.Compile(strings.Replace(s.Name, " ", "[ \\._-]", -1))
s.Name
이름은 어디에 있습니까? 'North by Northwest'와 같은 사용할 수 있습니다. 이제 가장 분명한 각은 각 문자에 대해 s.Name
'[nN]'을 쓰는 것입니다.
for i := 0; i < len(s.Name); i++ {
if s.Name[i] == " " {
fmt.Fprintf(str, "%s[ \\._-]", str);
} else {
fmt.Fprintf(str, "%s[%s%s]", str, strings.ToLower(s.Name[i]), strings.ToUpper(s.Name[i]))
}
}
그러나 나는 다소 우아하지 않은 해결이라고 생각합니다. 속도는 실제로 문제가 없지만 다른 방법이 있습니다.
정규식의 첫 번째 항목으로 대소 문자를 사용하지 않습니다.
"(?i)"
정규식의 시작 부분 에 추가 하여 이를 수행합니다 .
reg, err := regexp.Compile("(?i)"+strings.Replace(s.Name, " ", "[ \\._-]", -1))
고정 정규식의 경우 다음과 가변합니다.
r := regexp.MustCompile(`(?i)CaSe`)
플래그 에 대한 자세한 내용은 패키지 문서 (또는 구문 문서 )에서 "flags"라는 용어를 검색하십시오 .regexp/syntax
(?i)
패턴의 시작 부분에 추가하여 대소 문자를 구분하지 않을 수 있습니다 .
저는 Go에 익숙하지 않지만 다음 예제에 따르면 http://play.golang.org/p/WgpNhwWWuW
정규식 문 앞에 (?i)
i
플래그를 사용하십시오 . 팁 문서 인용 :
그룹화 :
(re) numbered capturing group
(?P<name>re) named & numbered capturing group
(?:re) non-capturing group
(?flags) set flags within current group; non-capturing
(?flags:re) set flags during re; non-capturing
플래그 구문은 xyz (set) 또는 -xyz (clear) 또는 xy-z (set xy, clear z)입니다. 플래그는 다음과 가변적입니다.
i case-insensitive (default false)
m multi-line mode: ^ and $ match begin/end line in addition to begin/end text (default false)
s let . match \n (default false)
U ungreedy: swap meaning of x* and x*?, x+ and x+?, etc (default false)
참고 URL : https://stackoverflow.com/questions/15326421/how-do-i-do-a-case-insensitive-regular-expression-in-go
반응형
'ProgramingTip' 카테고리의 다른 글
HTML- 전체 DIV를 하이퍼 링크로 만드는 방법은 무엇입니까? (0) | 2020.11.03 |
---|---|
MYSQL을 outfile로 "액세스가 거부되었습니다."-내 사용자는 "모든"액세스 권한을 가지고 있고 CHMOD 777입니다. (0) | 2020.11.03 |
잘못된 구성 개체입니다. (0) | 2020.11.03 |
Eclipse에서 XML 코드 형식 지정 (0) | 2020.11.03 |
Ubuntu의 Eclipse 창에있는 매우 큰 탭 (0) | 2020.11.03 |