2

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

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 

如果数字不在搜索字符串的开头或结尾,似乎可以使用

4

1 回答 1

2

您的模式不匹配,因为您正在尝试做不可能的事情。

包含变量值后,模式如下所示%f[%a]123test%f[%A]:意思是:

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

您的模式(如书面)不适用于以非字母开头或结尾的任何单词。

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

于 2012-08-28T16:55:01.777 回答