Lua边境模式匹配(全字搜索)

时间:2012-08-28 09:24:56

标签: string lua gsub lua-patterns

有人可以帮我解决这个问题:

s_test = "this is a test string this is a test string "

function String.Wholefind(Search_string, Word)
 _, F_result = string.gsub(Search_string, '%f[%a]'..Word..'%f[%A]',"")
 return F_result
end

A_test = String.Wholefind(s_test,"string")
output: A_test = 2

所以前沿模式发现整个单词没有问题,gsub统计整个单词没问题,但如果搜索字符串有数字怎么办?

s_test = " 123test 123test 123"
B_test = String.Wholefind(s_test,"123test")
output: B_test = 0 
如果数字不在搜索字符串的开头或结尾

似乎可以使用

1 个答案:

答案 0 :(得分:2)

你的模式并不匹配,因为你正试图做不可能的事。

包含变量值后,模式如下所示:%f[%a]123test%f[%A]。这意味着:

  1. %f [%a] - 找到从非字母到字母的转换
  2. 123 - 在从非字母转换为字母后的位置找到123。这本身是不可能的,因为当一封非字母跟随它时,你无法匹配转换到字母。
  3. 您的模式(如所写)不适用于任何以非字母开头或结尾的单词。

    如果您需要搜索包含字母和数字的片段,则需要将您的模式更改为'%f[%S]'..Word..'%f[%s]'