2010-07-26 2 views
2

학교의 뉴스 사이트 (WordPress 실행)에서 PHP로 정규 표현식을 사용하려고합니다. 누군가가 게시물을 저장할 때마다 "레지스"의 모든 인스턴스 (끝에 '예수회'가없는)가 '레지스 예수회'로 대체됩니다. (저는 Regis Jesuit High School에 다니며, 브랜딩에 대해 까다 롭습니다.) 이 문자열을 찾은 경우는 (단일 또는 이중 따옴표) "레지스 '또는'레져 '를 일치하지 않는, 그래서 나는이 정규식을 수정 얼마나따옴표 붙지 않은 문자열 일치하기

/regis(?! jesuit)/i 

을 : 전반적으로이 다음과 대소 문자를 구분하지 정규식과 함께 잘 작동 ? (또는 심지어 "나는 Regis High School에 간다"). 여기에있는 아이디어는 필요에 따라 변경하는 것이지만 사람들의 이야기에있는 직접 인용문에서 동일하게 유지하여 사람들의 인용문을 변경하지 않도록하는 것입니다.

감사합니다. Morgan

+4

당신이 들어갈 문제는 따옴표 쌍을 맞추는 것입니다. Regis 고등학교에 갔다. "최근 Regis grad 인 John Integer는 말했다."하지만 아직 Regis 졸업생 카드가 없습니다. "라고 말하면서 정규 표현식 파서에게 중간을 말하기는 매우 어려울 것입니다. 대문자는 두 따옴표 사이에 없습니다. 또한, AP 스타일은 단락 인용문 *을 시작하기위한 인용문을 요구하지만 후속 단락이 인용문 *의 연속 일 경우 끝내지 않으므로 사실 매우 까다로워집니다. – Robusto

+0

또한, 모든 사람들이 올바른 인용을 알고 있거나 신경 쓰고 있다고 가정하거나, 작은 따옴표 또는 큰 따옴표만을 사용하고 따옴표를 닫는 것을 결코 잊지 마십시오. * 게다가 : 당신은 "인용 된"원본을 바꾸고 싶지 않다. 물건을 사람들이 텍스트 필드에 입력하는 것은 관계없이 다른 사람의 의견을 인용해도 ** 인용 된 텍스트입니다. 그것에 대해 생각해보십시오. * – Tomalak

+1

오, 그리고 잊기 전에 : "레지스"는 학교가 아닌 다른 것을 의미하지 않는다고 가정하면, 최소한 말하기에는 근시안적입니다. Google에서 '레지스 (Regis)'를 검색하고 그것이 의미하는 여러 가지 항목에 놀라게됩니다. – Tomalak

답변

1

질문에 대한 의견을 토대로 해결책은 현재 정규식을 사용하는 것이지만 클라이언트 측 JavaScript 경고로만 사용하는 것이 좋습니다.

입력 한 텍스트가 "jisuit"다음에 "regis"와 일치하지 않으면 사용자가 제출하기 전에 "자동으로 상표를 붙 였는지 확인하십시오"라는 메시지가 표시되지만 자동으로 아무 것도 변경하지 않습니다. 기본적으로 언어 복잡성을 인간의 두뇌에 남겨 둡니다. :)

+0

나는 당신이 어디로 가고 있는지 알고 있습니다. 그러나 나는 더 나은 해결책을 발견했다고 생각한다. 고등학생들의 새 스팀 관리는 충분히 어렵습니다. 우리는 이전에 제안한 솔루션을 시도했지만 너무 잘 작동하지 않았습니다. 사람들은 학교 "레지스 (Regis)"라고 부르지 만, 학교는 "레지스 예수회 (Regis Jesuit)"라는 상표를 붙이고 싶어합니다. 그래도 아무도 듣지 않습니다. – integ3r

+1

우리 작가들이 Regis Jesuit를 "Regis"라고 부르는 시간의 95 %. 해결책은 (내 의견으로는) 이전에 가지고 있던 동일한 정규 표현식을 하나의 수정으로 사용하는 것입니다. /(? integ3r

관련 문제