Byte Commander의 답변을 읽은 후 가능한 약간의 개선 사항을 소개하고 싶습니다.
미리 결정된 한 두 n
단어 중 하나와 일치하는 정규 표현식을 생성 할 수 있습니다 n
. 예를 들어 1 ~ 3 개의 단어를 일치 시키려면 정규 표현식 :
^([A-Z]+)(?:,([A-Z]+))?(?:,([A-Z]+))?$
다음 문장을 1 개, 2 개 또는 3 개의 캡처 그룹과 일치시킵니다.
HELLO,LITTLE,WORLD
HELLO,WORLD
HELLO
Regex101 에서이 정규식에 대한 자세한 설명을 볼 수 있습니다 .
내가 말했듯이 좋아하는 언어를 사용하여 원하는 그룹에 대해이 정규식을 생성하는 것은 매우 쉽습니다. 나는 빠른 사람이 아니기 때문에 다음은 루비 예제입니다.
def make_regexp(group_regexp, count: 3, delimiter: ",")
regexp_str = "^(#{group_regexp})"
(count - 1).times.each do
regexp_str += "(?:#{delimiter}(#{group_regexp}))?"
end
regexp_str += "$"
return regexp_str
end
puts make_regexp("[A-Z]+")
즉,이 경우 정규식을 사용하지 않는 것이 좋습니다 split
. 필요에 따라 단순한 토큰 화 패턴에서 일부 토큰 화 패턴 까지 다른 많은 훌륭한 도구 가 있습니다. IMHO, 정규 표현식은 그중 하나가 아닙니다. 예를 들어 루비에서는 str.split(",")
또는 같은 것을 사용합니다.str.scan(/[A-Z]+/)
,
않습니까?