2015-09-05 114 views
1

我需要搜索段落中的大多数连接词并用空白替换。sas perl正则表达式(搜索精确匹配多个值并替换为一个)

例如:

You are a boy ....... 
Is he a scientist ...... 

我需要删除喜欢你的话,我,我们,他们,他,她,它等...

我想出这个正则表达式,但它会如果单词并排,则不起作用。

content = left(prxchange('s/ you | are | he//',-1,cat(' ',content,' '))); 

我的结果不会删除单词“are”。我在前面和后面放置空白,以确保它完全匹配。即时搜索“他”时不会选择“hello”。

有无论如何搜索完全匹配并用空白替换吗?如何包含字边界?我试图放置\ b但它似乎不工作。

回答

0

你是对的。这需要\b(单词边界)。

prxid = prxparse('s/\b(?:you|i|we|they|he|she|it|etc)\b//'); 
call prxchange(prxid,-1,content); 

使用非捕获组(?: ...)指定字边界之前和之后的任何交替的。

+0

谢谢!它适用于我..我还有一个问题,如果我想匹配的词是“不”。它只会删除“don”...“'t”将会保留... – Yumi

+1

prxid = prxparse(“s/\ b(?<!')(?:(you | you%'re))\ b (?!'')/!/“);和prxid = prxparse(“s/\ b(?<!')(?:(你|你))\ b(?!'')/!/”);但它似乎不工作..., – Yumi

+0

我错过了%STR ..谢谢你的帮助! – Yumi