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 に答える