ProgramingTip

점과 일치하는 정규 배열

bestdevel 2020. 10. 16. 07:42
반응형

점과 일치하는 정규 배열


"blah blah blah test.this@gmail.com blah blah"의 "test.this"와 일치하는 가장 좋은 방법이 무엇인지 궁금하십니까? Python 사용.

난 노력 했어 re.split(r"\b\w.\w@")

감사합니다!


.정규식의 A 는 메타 문자이며 모든 문자를 일치시키는 데 사용됩니다. 리터럴 점과 일치하는 이스케이프해야합니다.\.


당신에 regex당신은 탈출 할 필요가 dot(.) - "\."또는 내부에 사용 character class - "[.]"이 모든 문자와 일치하는 정규 서식에서 메타 문자는 그대로입니다.

또한 하나 이상의 단어를 일치 여부시키는 \w+대신 필요 합니다 \w.


이제 test.this콘텐츠 split필요한 것이 아닙니다. split문자열을 test.this. 예 :-

>>> re.split(r"\b\w+\.\w+@", s)
['blah blah blah ', 'gmail.com blah blah']

다음을 사용할 수 있습니다 .-re.findall

>>> re.findall(r'\w+[.]\w+(?=@)', s)   # look ahead
['test.this']
>>> re.findall(r'(\w+[.]\w+)@', s)     # capture group
['test.this']

"기본 모드에서 Dot (.)은 줄 바꿈을 사용하는 모든 문자와 일치합니다. DOTALL 플래그가 지정되어 있으면 줄 바꿈을 포함하여 모든 문자와 일치합니다." (파이썬 문서)

따라서 점 문자를 평가하려는 경우 대괄호 안에 야 생각합니다.

>>> p = re.compile(r'\b(\w+[.]\w+)')
>>> resp = p.search("blah blah blah test.this@gmail.com blah blah")
>>> resp.group()
'test.this'

자바에서는에서는 \를 사용합니다. 점과 일치합니다.

"blah.tests.zibri.org".match('test\\..*')
null

"blah.test.zibri.org".match('test\\..*')
["test.zibri.org", index: 5, input: "blah.test.zibri.org", groups: undefined]

참고 URL : https://stackoverflow.com/questions/13989640/regular-expression-to-match-a-dot

반응형