좋아요, 위의 예를 통해 우리는 Python의 정규식에 대한 예비적인 이해를 얻었습니다. 정규식의 규칙은 무엇이며 문자는 무엇을 의미합니까?
사실 이에 대해 걱정할 필요가 없습니다. 해당 정규식 규칙 목록은 이 장의 뒷부분에서 제공되며 이러한 내용은 인터넷의 Google에서 쉽게 찾을 수 있습니다. 그럼 이제 정규식에 대한 이해를 더욱 심화시키고, 정규식의 문자 집합에 대해 알아보겠습니다.
문자 집합은 대괄호 "[]" 쌍으로 묶인 문자 집합입니다. 문자 세트를 사용하면 여러 문자 중 하나를 일치시킬 수 있습니다.
예를 들어 C[ET]O를 사용하여 CEO 또는 CTO를 일치시키는 경우, 즉 [ET]는 E 또는 T를 나타냅니다. 위에서 언급한 [a-z]와 마찬가지로 모든 소문자 중 하나입니다. 여기서는 하이픈 "-"을 사용하여 연속된 문자의 문자 범위를 정의합니다. 물론 이와 같이 작성하면 단일 16진수와 일치하며 대소문자를 구분하지 않는 [0-9a-fA-F]와 같은 여러 문자 범위가 포함될 수 있습니다. 문자 및 범위 정의의 순서는 일치 결과에 영향을 주지 않습니다.
사실 너무 많이 말했지만, 문자 집합에서 대괄호 "[]" 쌍 사이의 문자 관계가 or 관계임을 증명하고 싶습니다. 예를 들어 보겠습니다.
import re a = 'uav,ubv,ucv,uwv,uzv,ucv,uov' # 字符集 # 取 u 和 v 中间是 a 或 b 或 c 的字符 findall = re.findall('u[abc]v', a) print(findall) # 如果是连续的字母,数字可以使用 - 来代替 l = re.findall('u[a-c]v', a) print(l) # 取 u 和 v 中间不是 a 或 b 或 c 的字符 re_findall = re.findall('u[^abc]v', a) print(re_findall) 输出的结果: ['uav', 'ubv', 'ucv', 'ucv'] ['uav', 'ubv', 'ucv', 'ucv'] ['uwv', 'uzv', 'uov']
예제에서는 부정 문자 집합이 사용되었습니다. 즉, 왼쪽 대괄호 "[" 뒤에 꺾쇠 괄호 "^"가 오면 문자 집합이 반전됩니다. 한 가지 기억해야 할 점은 부정 문자 집합이 단일 문자와 일치해야 한다는 것입니다. 예를 들어, q[^u]는 u가 따라오지 않고 q와 일치한다는 의미는 아닙니다. 이는 q와 u가 아닌 문자가 뒤따르는 것을 의미합니다. 위 예의 출력 결과를 비교하면 구체적인 내용을 이해할 수 있습니다.
우리 모두는 정규식 자체가 모든 숫자와 일치하는 d와 같은 일부 규칙을 정의한다는 것을 알고 있습니다. 실제로 이는 [0-9]와 동일하며, 이를 a 형식으로 설명합니다. 문자 집합입니다.
import re a = 'uav_ubv_ucv_uwv_uzv_ucv_uov&123-456-789' # 概括字符集 # \d 相当于 [0-9] ,匹配所有数字字符 # \D 相当于 [^0-9] , 匹配所有非数字字符 findall1 = re.findall('\d', a) findall2 = re.findall('[0-9]', a) findall3 = re.findall('\D', a) findall4 = re.findall('[^0-9]', a) print(findall1) print(findall2) print(findall3) print(findall4) # \w 匹配包括下划线的任何单词字符,等价于 [A-Za-z0-9_] findall5 = re.findall('\w', a) findall6 = re.findall('[A-Za-z0-9_]', a) print(findall5) print(findall6)
출력 결과:
['1', '2', '3', '4', '5', '6', '7', '8', '9'] ['1', '2', '3', '4', '5', '6', '7', '8', '9'] ['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '&', '-', '-'] ['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '&', '-', '-'] ['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_', 'u', 'o', 'v', '1', '2', '3', '4', '5', '6', '7', '8', '9'] ['u', 'a', 'v', '_', 'u', 'b', 'v', '_', 'u', 'c', 'v', '_', 'u', 'w', 'v', '_', 'u', 'z', 'v', '_', 'u', 'c', 'v', '_