2012-09-26 2 views
0

내가 Unbounce 양식 제출에 대한 Aweber의 자동 이메일 구문 분석을 사용하고 있는데이 기본 정규식 남았습니다 조금 것 같다 : 문제는 그들은 \nname:\s+(.+?)\nAweber 정규식 퍼즐

\nemail:\s+(.+?)\n 이름으로 이메일을 일치

입니다 왜냐하면 내가 사용자들에게 그들의 이름을 물어 보지 않기 때문에 그들의 정규식은 자동적으로 다음 줄을 차지한다. ===== FORM DATA ===== 그래서 "Hi ===== FORM DATA = ====! " 이 더 값이 존재하지 않는 경우는 줄의 끝에서 정지하도록 내가 그들의 정규식을 수정하려면 어떻게

page_name: 
page_id: 2b78ddde-e7bb-11e1-9fde-12313e00ec56 
page_url: http://www1.sample.com 
variant: C 
email: [email protected] 
name: 

===== FORM DATA ===== 

email: ["[email protected]"] 
ip_address: 88.253.**.** 



-- 
The Unbounce Team 
Toll Free 1-888-515-9161 
[email protected] 
http://unbounce.com 

: 여기

샘플 Unbounce 이메일처럼 보이는 무엇인가?

답변

2
는 다음에 이름 정규식을 변경

:

\nname:[ \t]+(.+?)\n 

여기에 변화가 [ \t]\s을 교체하는 것입니다, \s가 줄 바꿈을 일치하기 때문이다. 언급 한 바와 같이

\nname:[ \t]*(.*?)\n 

:

이 이름이 제공되지 않으면 당신은 여전히 ​​일치하지만 그룹으로 빈 문자열을 넣어하려는 경우 경기가 실패합니다, 당신은 다음을 사용할 수 있습니다 Evandro Silva에 따르면 .+? 또는 .*?[^\n]+ 또는 [^\n]*으로 바꿔이 정규식을보다 효율적으로 만들 수 있습니다.

+1

은'. +?'사용 대신 목록을 CPU 비용이 부정되는 것을 기억 [^ \ n] –

+0

좋은 점은, 추가 된 대답이. 누구든지 downvoted, 설명 신경? –

0

시도 정규식 패턴은 [\n\r]name:[^\S\n\r]*([^\n\r]*)

+0

이것은 리눅스에서 작동하지 않을 것입니다. 이것은 : \ nname : [\ s \ t] * ([^ \ n] +)' –

+0

@EvandroSilva - 왜 작동하지 않을까요? ''\ n \ r''은 조합을 지정하지 않고 부정 문자 클래스만을 지정합니다. 제 생각에는 오메가의 해결책은 괜찮습니다. –

+0

@ acheong87 사실 당신 말이 맞아요, '\ n \ r'이 목록에 명시되어 있습니다. 내가 잘못한 것 같아요. –