在Lua中仅使用Regex替换整个单词



我正在制作一个能够正确处理用户性别的程序。因此,它应该将he的每个实例替换为she,反之亦然。

问题是,这也将取代themtheirhelp等词中的he。。。这就是我被卡住的地方。

local str = "the he he's hell"
str = str:gsub("he", "she") --tried my best, not the correct solution!
print(str) --expecting "the she she's hell"

基本上将所有he替换为she

一个双向工作的可能解决方案:

str = str:gsub("%a+", {he = "she", she = "he"})

%a+匹配一个或多个基本上是单词的字母。该匹配被相应的表条目替换或者保持不变。

还有其他方法可以做到这一点,但这可能是实现两天解决方案的最短方法。

编辑:

关于第二个参数。我找不到任何有关这方面的文件。你有吗?

不确定您在哪里寻找文档,但Lua手册上说:

string.gsub(s,pattern,repl[,n](

如果repl是一个表,则使用第一次捕捉作为关键。

最新更新