자바 스크립트 파일에서 번역을위한 문자열 추출기를 만들었습니다. 시작 지점 (see)으로 사용한 jsgettext 프로젝트를 찾았습니다.자바 스크립트 메소드 호출을 추출하는 정규 표현식
자바 스크립트 파일 내에 __()
메소드에 대한 호출을 찾으려면 reqular 표현식을 사용합니다. 간단한 호출이 성공적으로 발견되었지만 __('string', { a: 'b'})
과 같은 인수를 사용하는 호출은 성공적이지 않습니다.
정규 표현식을 수정하여 메소드 호출을 인수로 일치 시키려고했지만 성공하지 못했습니다 (정규 표현식 전문가가 아닙니다).
내 질문 : 다음 정규식을 수정하여 이와 같은 문자열을 일치시키는 방법은 무엇입니까?
// this is catched successfully
// var string = __("Please enter %number% more characters.");
// this is problematic
var string = __("Please enter %number% more characters.", { '%number%' : 2 });
정규 표현식 : 당신은 그냥 일치 할 필요
__("Please enter %number% more characters.", { '%number%' : 2 });
:
$keywords = join('|', array('__'));
preg_match_all('# (?:' . $keywords . ') \(\\ *" ((?: (?>[^"\\\\]++) | \\\\\\\\ | (?<!\\\\)\\\\(?!\\\\) | \\\\")*) (?<!\\\\)"\\ *\) #ix', $content, $matches, PREG_SET_ORDER);
당신을 감사합니다
이'$ keywords = join ('|', array ('__'));는 나에게 이해가되지 않는다 ... – HamZa
다른 i18n 함수와 일치시키기위한 것이다. 질문에서 그 코드를 삭제했습니다. – Mishal