2015-03-30 3 views
0

Я хочу извлечь два слова «кровь» и «потеря» в ближайшей близости к подстроке. У меня есть коды ниже, но ID 4 не работает. Я хочу получить подстроку «потеря крови», а не «кровь, а потеря крови».SAS prxparse для извлечения строки

data test; 
    infile datalines truncover; 
    input id $2. string $80.; 
    datalines; 
1 there is one blood something loss 
2 no something else here 
3 three blood loss again blood loss can not believe loss of blood 
4 two bloods but blood loss 
; 
run; 


data test1; 
    set test; 
    rx=prxparse("/blood.*?loss|loss.*?blood/i"); 
    start=1; 
    stop =length(trim(string)); 
    do until (p=0); 
    call prxnext(rx,start,stop,trim(string),p,l); 
    if p>0 then do; 
     sub=substr(string,p,l); 
     output; 
    end; 
    end; 
run; 
+3

Пожалуйста, не включайте имя или адрес электронной почты в вопрос (и электронная почта не должна быть где-либо здесь видимой, ее легко очистить от спамеров). – Joe

+0

Вы хотите совместить «кровь», но не «кровь», или «кровь» в порядке, если она окажется самой близкой? – Joe

+0

Пожалуйста, перефразируйте «близкую близость», обновите свой вопрос. –

ответ

1

Очень маленькие изменения необходимы, если кровь сек нужно игнорировать. Добавьте промежуток между кровью и . в первой части регулярного выражения, и он попытается сопоставить слово «кровь». Ниже приведена справка prxparse.

rx=prxparse("/blood .*?loss|loss.*?blood/i"); 

В соответствии с обновленным комментарием, для сравнения строк «потери крови», когда строка как «что-то в крови потери крови», то отрицательный предпросмотр может помочь.

prxparse("/blood (.(?!blood))*?loss/i") 
+0

Спасибо, Сушил, за ваш добрый ответ. На самом деле, иногда это может быть строка, подобная «кровь, потеря крови». И я хочу извлечь из нее «потерю крови», а не «кровь, кровь». Есть идеи? Спасибо миллион –

+0

Я представил новое регулярное выражение для соответствия случаю, о котором вы упоминали – sushil

+0

Сушиль, вы гений. Оно работало завораживающе. Снимаю перед вами шляпу. –

Смежные вопросы