我有一个模式“[^ a-z] xxx yyy [^ a-z]”,我需要匹配。我可以在模式的“xxx yyy”部分接受近似匹配,但需要字符类保持不变。
上述模式在“skxxx yyyaa”等字符串中找到匹配项。
我尝试过使用“< [^ a-z]> xxx yyy< [^ a-z]>”其中<>元字符不允许更改,但我认为它忽略了<>中的元字符。
代码是:
agrep( "[^a-z]xxx yyy[^a-z]","skxxx yyyaa",max.distance=2,fixed=FALSE,ignore.case=TRUE)
答案 0 :(得分:1)
您可以添加以下条件,检查距离是否来自“xxx yyy”,而不是来自周围的[^ a-z]。
adist("[^a-z]xxx yyy[^a-z]","sk-xxx yyz-aa",fixed=FALSE,ignore.case=TRUE) ==
adist( "xxx yyy","sk-xxx yyz-aa",fixed=FALSE,ignore.case=TRUE)
> TRUE
adist("[^a-z]xxx yyy[^a-z]","sk-xxx yyzaa",fixed=FALSE,ignore.case=TRUE) ==
adist( "xxx yyy","sk-xxx yyzaa",fixed=FALSE,ignore.case=TRUE)
> FALSE