2016-09-02 2 views
1

이 정규식을 사용하려고 할 때 참으로 피곤합니다. 나는 sas에서 perl 정규식을 사용하고있다. 누구든지 나를 도울 수 있다면 크게 감사하겠습니다.Perl 정규식 검색 : 한 단어 만 일치하는 문자열, 부정적인 lookbehind lookahead도 사용하는 방법

1 weight 
2 weightchange 
3 weight change 
4 weight percentile 
5 change weight 
6 percentile weight 
7 **** weight pre op 
8 water weight 
9 weight percentile 
10 myocardial infarction 
  1. 가 어떻게 1하지만 2-9 일치하는 정규식을 사용 : 나는 세 가지 질문, 텍스트 (줄 번호는 참조 용으로 만 사용가)의 다음 줄을 고려 있나요? 합니다 (는 시작 부분에있는 단어와 일치하는 동시에 종료하는 방법입니다?)

  2. 어떻게 1 일치하는 정규식과 부정적 예측/lookbehind 주장을 사용하고 명시 적으로 2-6를 제외 것인가?

  3. 78을 제외하고 Q2를 해결하기에 적합한 정규 표현식을 어떻게 수정합니까?

보너스 질문 : 정규식을 사용하여에 좋은를 얻기 위해 얼마나 당신을 했습니까?

감사합니다.

+1

SO는 무료 코딩 서비스가 아닙니다. 당신이 일주일 동안이 일을 해왔다면, 분명히 당신은 당신이 원하는 것에 가까운 시도를 가지고 있습니다. 게시하면 Google에서 해결하도록 도와 드릴 수 있습니다. 그러나 우리는 당신을 위해 그것을하지 않을 것입니다. – Barmar

+2

Q1에 '^ weight $'을 사용할 수 없습니까? – Barmar

+0

당신의 (1)은 단순한 ('/^weight \ s * $ /') ... 그리고 그 문제는 (2)와 (3)이 관련이 없다는 것입니다. 그들 모두를 구별 할 필요가 없다. 운동을 원할 경우, 기본적인 탐색 방법을 사용합니다. 예를 들어'/ weight (?! \ s * (?: change | percentile)) /'뒤에 단어가 나열되지 않은 상태에서 'weight'와 일치 시키려면 // // 몇 년 동안 경험이 필요합니다. 그러나, 당신은 매우 신속하게, 아주 적절한 사용을 위해 기초를 선택할 수 있습니다. // 가장 중요한 점은 질문을 훨씬 구체적으로 작성하십시오. - 무엇이 문제인지, 우리가 한 일을 보여주십시오. – zdim

답변

1

1) @Barmar가 이미 언급 한 바 : ^weight$은 사용자가 원하는 것을하기 때문에 좋습니다. 원하는대로 할 수 있습니까? 예 : 줄에 "무게"만 표시됩니까?

2) /(?<!percentile)(?<!change)weight(?! ?change| percentile)/과 같은 작업을 수행 할 수 있습니다. RE 엔진이 가변 너비 lookbehind를 지원하지 않으므로 음수 lookbehinds는 (?<!change |percentile)으로 작성할 수 없지만 일치 항목의 너비가 0이므로 너는 따로 따로 나열 할 수 있습니다. 모든 그 끔찍한 특정 보인다. 예를 들어 실패합니다. 텍스트에 줄 바꿈으로 구분 된 단어가 포함되어있는 경우

3) ****water에 대해 다른 부정적인 lookbehind를 추가하십시오.

나는 정규식에 그다지 좋지 않다. :) 그리고 앉아서 한 번도 들어 본 적이없는 것들을 배우기로 결심했다. 유스 케이스가 없다면 그건 쓸모가 없다. 당신은 잠시 후에 그것을 잊어 버릴 것입니다. 지금까지 20 년 이상 regexen을 사용해 왔지만 몇 주 전에 유니 코드 속성을 매치하는 것과 같은 새로운 것을 배우고 있습니다.

+1

기술적으로'^ weight $'는''weight "'와'"weight "모두 일치합니다. \ n"' – ikegami

+0

기술적 인면에서 # 1에 대한'^ weight \ z'는 매우 감사합니다. 죄송합니다. 내가 시도한 것을 더 포함하지 않았습니다. ^ weight $는 목록에서 일치하지 않는 놀랍지 만 (정규식 코드의 경우처럼) 성공했습니다. 코드를 수정하려고했습니다./(?

+0

그 변화는 "백분위"가 "백분위"와 "변화"로 동시에 선행되도록 요구하는 것을 의미하며, 그 중 하나만 실제로 존재할 수 있기 때문에 의미가 없습니다. 그래서 그것은 전혀 전혀 일치하지 않을 것입니다. 미리보기는 교대가 포함되어 있기 때문에 혼자서 작업 할 수 있으므로 선행 공백을 포함하거나 포함하지 않는 '변경'또는 '백분위'가 허용됩니다. – mbethke

관련 문제