1

我有一个需要匹配的模式“[^az]xxx yyy[^az]”。我可以接受模式的“xxx yyy”部分的近似匹配,但需要字符类保持不变。

上述模式在“skxxx yyyaa”等字符串中找到匹配项。

我尝试使用“<[^az]>xxx yyy<[^az]>”,其中 <> 元字符不允许更改,但我认为它忽略了 <> 中的元字符。

代码是:

agrep( "[^a-z]xxx yyy[^a-z]","skxxx yyyaa",max.distance=2,fixed=FALSE,ignore.case=TRUE)
4

1 回答 1

1

您可以添加以下条件,检查距离来自“xxx yyy”片段,而不是来自周围的 [^az]。

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
于 2012-12-14T21:04:43.047 回答