2012-07-05 4 views
0

정규식이 좋지 않아서 제가 작업중인 몇 가지 표현에 도움이 될 수 있습니다. Text here then 999-99과 같은 텍스트 줄이 있는데 그 번호 순서를 끝까지 격리하고 싶습니다. 999-99 또는 999-99-9 일 수 있습니다. 다음은 작동하는 것 같다 :정규 표현식을 사용한 지원

\d{3}-\d{2}(-\d{1})? 

을하지만 난 정말 그냥 숫자 순서 후에 텍스트를 추가 할 수 있으며 여전히 일치로, 텍스트 내에서 어디서든 검색 할 것 같다 것을 알 수 있습니다. 이것은 더 엄격해야하기 때문에 라인은이 정확한 시퀀스로 끝나야하고, 그 뒤에는 아무것도 없어야합니다. ? 대신 $으로 끝내려고했으나 일치하는 항목을 만들지 못했습니다 (항상 false를 반환합니다)).

문자 교체에 도움이 될 수도 있습니다. 나는 OCR 스캐닝을 다루는 프로그램에서 일하고 있는데 때로는 되돌아 오는 문자열 값은 ܀ 기호로 표현할 수없는 문자를 포함합니다. ܀ 문자를 공백으로 대체하는 정규식이 있습니까?

+0

의 끝을 나타내는 {3} - \ d를 {2} (- \ D {1}) $'이 바람직하게는 교체에 대해 별도의 질문을해야 – DonCallisto

+0

작동합니다 귀하의 질문 중 일부를 선택하고 사용중인 언어를 표시하십시오. –

+0

나는 분명히해야한다. ? 대신 $를 사용하면 테스트 순서 999-99-9를 사용할 때 작동하지만 999-99에는 작동하지 않습니다. 나는 양쪽 모두를 위해 일할 필요가있다. 나는 이것이 괄호를 사용하는 것이라고 생각했다. – tjc59

답변

3

이 정규식을 사용해보십시오.

([\d-]+)$ 
1

를 사용하여 단어 경계 메타 문자, \b : 그것은 중복 이후

\b\d{3}-\d{2}(-\d)?\b 

또한 지난 \d에서 {1}을 제거 할 수 있습니다.

+0

숫자 시퀀스 뒤에 추가 텍스트가 있으면 여전히 일치를 반환합니다. 문자열이이 시퀀스로 끝나야하고 그 뒤에는 아무 것도 없어야하므로 엄격해야합니다. – tjc59

2

이렇게하면됩니다. 정규식을 $으로 끝내십시오. 그것은`\ d를 맞춰

\d{3}-\d{2}(-\d{1})?$

+0

그는 특히'$'를 사용하는 것이 그를 위해 일하지 않는다고 말했습니다. – vergenzt

+0

나는 분명히해야한다. ? 대신 $를 사용하면 테스트 순서 999-99-9를 사용할 때 작동하지만 999-99에는 작동하지 않습니다. 나는 양쪽 모두를 위해 일할 필요가있다. 나는 이것이 괄호를 사용하는 것이라고 생각했다. – tjc59

관련 문제