Lua前沿模式匹配(全字搜索)

s_test = "这是一个测试字符串这是一个测试字符串"

function String.Wholefind(搜索字符串, 单词)
 _, F_result = string.gsub(搜索字符串, '%f[%a]'..单词..'%f[%A]',"")
 return F_result
end

A_test = String.Wholefind(s_test,"字符串")
输出:A_test = 2

因此前沿模式可以轻松找到整个单词,gsub 也可以轻松计数整个单词,但如果搜索字符串中有数字怎么办呢?

s_test = " 123test 123test 123"
B_test = String.Wholefind(s_test,"123test")
输出:B_test = 0

似乎只有当数字不在搜索字符串的开头或结尾时才起作用。

点赞
用户1442917
用户1442917

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

加入了你的变量值,模式看起来像这样:%f[%a]123test%f[%A]。这意味着:

  1. %f\[%a\] - 寻找从非字母到字母的转换
  2. 123 - 在从非字母到字母的转换后的位置上寻找 123。这本身就是一个逻辑不可能,因为当一个非字母跟随它时,你无法匹配字母到字母的转换。

你的模式(如所写)对于以非字母开头或结尾的任何单词都不起作用。

如果你需要搜索包括字母和数字的片段,那么你的模式需要更改为类似于 '%f[%S]'..Word..'%f[%s]'

2012-08-28 16:55:01