나는 루비를 모른다. 루비에 의해 생성 된 다음 정규 표현식 (즉, http://www.a-k-r.org/abnf/에 의해 주어진 rfc1738 문법에 따라 실행)을 사용하려고합니다. PHP에서는 일치하지 않지만 루비에서는 성공적으로 일치합니다. 아무도이 차이를 설명 할 수있는 정규식의 PHP와 루비의 처리 사이의 차이점을 볼 수 있습니까?루비에서 일하는 정규식은 PHP가 아닙니다. 그 원인은 무엇일까?
http:\/\/(?:(?:(?:(?:[0-9a-z]|[0-9a-z](?:[\x2d0-9a-z]?)*[0-9a-z])\x2e)?)*(?:[a-z]|[a-z](?:[\x2d0-9a-z]?)*[0-9a-z])|\d+\x2e\d+\x2e\d+\x2e\d+)(?::\d+)?(?:\/(?:(?:[!\x24'-\x2e0-9_a-z]|%[0-9a-f][0-9a-f]|[&:;[email protected]])?)*(?:(?:\/(?:(?:[!\x24'-\x2e0-9_a-z]|%[0-9a-f][0-9a-f]|[&:;[email protected]])?)*)?)*(?:\x3f(?:(?:[!\x24'-\x2e0-9_a-z]|%[0-9a-f][0-9a-f]|[&:;[email protected]])?)*)?)?/i
하면 이후 모든 사랑 정규 표현식에 너무 많은 어떻게 다른 솔루션에 대해. rfc에 ABNF가 주어지면 임의의 문자열이 문법에 있는지 확인하는 방법 (PHP에서)이 필요합니다.
는 이 F REE,내가 임의의 다른 도구를 발견하지 않았습니다 아니라, 64 비트 시스템에서 컴파일되지 않습니다. 나는 또한 정규 표현식을 사용하지 않기를 바랄 것이다. 그러나 그것은 내가 성공한 가장 가까운 것이다.
Ruby에서 reg-ex를 호출하는 방법과 PHP에서 호출하는 방법을 보여주는 코드 샘플을 게시하고 싶을 것이다. 대부분의 PHP reg-ex 문제는 문자열 이스케이프로 이어집니다. 즉 PHP에서 문자열을 pcre 함수에 전달합니다. 문자열이 reg-ex 엔진으로 들어가기 전에 적용되었으므로, 자주 지나가고 있다고 생각하는 reg-ex는 실제 것이 아닙니다. (PCRE (preg_) vs (ereg_)의 문제도 있습니다.) 당신은 아마도 preg. –
을 원할 것입니다. 어떤 사람들은 문제에 직면했을 때 "알고 있습니다, 정규식을 사용할 것입니다."이제 그들은 두 가지 문제가 있습니다. – Chuck
정규 표현식을 만들 때 인간보다 더 나쁜 것은 컴퓨터입니다 – karim79