수색…


비고

정규 표현식은 정규 문법 또는 문맥 자유 문법 중 하나로 제한되기 때문에 정규 표현식은 흔히 오용됩니다. 따라서이 주제에는 정규식을 사용 하지 말고 선호하는 언어를 사용하는 몇 가지 예가 있습니다.

어떤 사람들은 문제에 직면했을 때 다음과 같이 생각합니다.
"나는 정규 표현식을 사용할 것이다."
이제 그들은 두 가지 문제가 있습니다.

- 제이미 스윈스키

일치하는 쌍 (괄호, 대괄호 등 ...)

일부 regex 엔진 (예 : .NET)은 컨텍스트가없는 표현식을 처리 할 수 ​​있으며이를 처리 할 수 ​​있습니다. 하지만 대부분의 표준 엔진에서는 그렇지 않습니다. 심지어 구문 분석 라이브러리를 사용하면 작업을 더 쉽게 수행 할 수 있습니다.

간단한 문자열 연산

정규 표현식 은 많은 작업을 수행 할 수 있기 때문에 가장 간단한 연산에 사용하기 쉽습니다. 그러나 정규 표현식 엔진을 사용하면 메모리와 프로세서 사용량이 비쌉니다 : 표현식을 컴파일하고, 메모리에 오토 마톤을 저장하고, 초기화 한 다음 문자열로 피드를 실행시켜야합니다.

그리고 그것을 사용하지 않아도되는 많은 경우가 있습니다! 선택한 언어가 무엇이든, 항상 기본 문자열 조작 도구가 있습니다. 따라서 규칙에 따라 표준 라이브러리에서 작업을 수행 할 도구가있는 경우 정규식이 아닌 해당 도구를 사용하십시오.

  • 문자열을 나눠 봤어?

예를 들어, 다음 스 니펫은 Python, Ruby 및 Javascript에서 작동합니다.

'foo.bar'.split('.')

어떤 식 으로든 읽기 쉽고 이해하기 쉬울뿐만 아니라 (어쨌든) 동등한 정규식보다 훨씬 효율적입니다.

(\w+)\.(\w+)
  • 후행 공백을 제거 하시겠습니까?

후행 공백에도 똑같이 적용됩니다!

'foobar     '.strip() # python or ruby
'foobar     '.trim() // javascript

다음 식과 같습니다.

([^\n]*)\s*$ # keeping \1 in the substitution

HTML (또는 XML, JSON 또는 C 코드 또는 ...) 구문 분석

웹 페이지 (또는 표현 / 프로그래밍 언어)에서 무언가를 추출하려는 경우 정규식은 작업에 대한 잘못된 도구입니다. 대신에 언어 라이브러리를 사용하여 작업을 수행해야합니다.

HTML, XML 또는 JSON을 읽으려면 제대로 구문 분석하는 라이브러리를 사용하여 원하는 언어로 사용할 수있는 객체로 제공하십시오! 읽기 쉽고 유지 보수가 쉬운 코드로 끝나고 결국 끝나지 않을 것입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow