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

时间:2021-05-18 18:46:17

标签: lua lua-patterns

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

问题是这也将替换 he 内的单词,例如 themtheirhelp... 这就是我被卡住的地方。

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

1 个答案:

答案 0 :(得分:2)

一种可能的解决方案,同时适用:

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

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

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

编辑:

<块引用>

关于第二个参数。我找不到任何关于此的文档。 你有吗?

不确定您在何处寻找文档,但 Lua Manual 说:

<块引用>

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

...

如果 repl 是一个表,那么每个匹配项都会查询该表,使用 第一个捕获作为关键。