2012-04-05 4 views
-1

다음 데이터가 있습니다.

abc def; ghi. |

([a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)((\w\.))? 

이 정규식 또한 내가 정규식의 여전히 아주 새로운 해요

([a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)$ 

일치합니다,하지만 난 생각 :

이 정규식 일치합니다 OR,() 그룹화 된? 0 번이나 1 번 나타났다. 그래서 위의 쿼리를 조합하면 여전히 일치 할 것이라고 생각했습니다. 그러나 다음과 일치하지 않습니다 :

([a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)((\w\.))|$ 

내가 뭘 잘못하고 있니?

ps. 내 정규식 테스트에 다음을 사용하고 있습니다. http://regexpal.com/

편집 : 코드 태그를 사용하지 않은 , 그래서 캐릭터가

사라 EDIT2 : 내가 일치하려고하면 다음은 , 데이터가 이름이됩니다. "abc def"는 성입니다. ghi 인사말 (영어는 제 모국어가 아닙니다. 선생님과 같은 단어가 정확한 용어입니까?). 그러나 첫 번째 이름의 첫 글자 일 가능성이 있습니다. 그것이 라인의 끝이거나 그 편지이어야하는 이유입니다.

것이다 관련된 이름이 데이터 :

ABC는; def. G.

+0

두 번째 정규식과 일치하지 않습니다. 확인할 수 있습니까? – PinnyM

+0

여기에 있습니다. 문자열의 어느 부분에 일치 시키려고합니까? 그 부분은 분명하지 않다. – Squazic

+2

$는 "문자열의 끝"을 의미합니다. 그래서 당신의 마지막 정규식은 이해가되지 않습니다. "(긴 패턴) 또는 끝 부분 문자열"을 코딩했습니다. –

답변

1

운영자 우선 순위 | 연산자는 조금 까다 롭습니다. 명시 적으로 두 피연산자를 괄호로 묶는 것이 좋습니다. 또한 regexes에 공백을 넣는 것에주의하십시오. \ w에서 문자 그대로의 마침표를 찾으려는 것 같습니다. G와 일치하는 조각

그래서 나는 당신이 결합 된 표현에 대해 원하는 것은

((.*)((\w\.))?)|(.*)$ 

그러나 이후 같은 생각? 0 이상을 의미 당신이 배운대로,이

(.*)((\w\.))?)$ 

로 다시 작성할 수 있습니다 그리고, 다시 표현의 나머지 부분을 추가, 우리는

^[a-z0-9A-ZÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ ]*)\W (.*)((\w\.))?)$ 

을 그리고 네 "인사말" 또는 "greeting"은 "Mr.", "Ms.", "Dr."등에 대한 좋은 단어입니다.

+0

올바른 표현을 한 후 : ([a-z0-9A-ZÀÁAÇÇÉÊÊÌÌààâ €] .))? $ 작동하는 것 같습니다. – Boelensman1