2015-03-04 5 views
1

У меня есть переменные «комментарии», которые являются только отдельными комментариями пользователей. Это некоторые слова, которые чувствительны, например, их имена пользователей, которые мне нужно удалить из строки. Все имена пользователей начинаются с одних и тех же первых трех букв, но затем различаются, а имена всех пользователей - 8 символов. Я пытаюсь найти способ удалить все имена пользователей из строки, но мне не повезло. Они встречаются в разных местах в каждой строке, если они встречаются вообще. Моя первая мысль заключалась в использовании TRANSWRD(), но я не думаю, что могу использовать эту функцию SAS с подстановочным знаком. Кто-нибудь знает о решении? Большое спасибо за ваше время!Удалить слова из строки на основе префикса

ответ

2

Я бы использовал регулярное выражение PERL для этого, у них есть очень мощные критерии поиска, которые будут соответствовать вашим потребностям. В приведенном ниже примере удаляются только 3-го и 4-го слова из строки, т. Е. Только те, которые имеют точные критерии.

data test; 
input comments $50.; 
regexid = prxparse('s/abc\w{5}\b//'); /* search for 'abc' followed by any 5 characters, followed by a word boundary (i.e. a space) */ 
call prxchange(regexid,-1,comments); /* remove usernames */ 
datalines; 
abc abc123 abc12345 abc98765 abc123456 
; 
run; 
+0

Только я бы добавил, что вы, вероятно, должны _replace_ использовать имя пользователя '[имя_пользователя]' или что-то в этом роде, а не удалять их. – Joe

+0

Это сработало! Я буду честен, что никогда раньше не использовал PERL, поэтому мне нужно вернуться, чтобы понять, что было сделано, но я возьму его. Спасибо!!! – jswtraveler

+0

Немного сложно узнать синтаксис (для этого я всегда использую лист подсказок), но в Интернете есть множество полезных примеров. Чтобы охватить точку Джо, если вы хотите заменить значения вместо их удаления, вставьте нужную строку между // в конце функции «prxparse» – Longfish

-1

Если вы используете SAS, функция find должна найти для вас субстрат.

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