在 Lua 中,.gsub()
函数用于在字符串中执行替换操作。它接受三个参数:原始字符串、模式字符串和替换字符串。.gsub()
函数使用正则表达式作为模式字符串,以便在原始字符串中找到要替换的子字符串。
以下是一个使用 .gsub()
函数的示例:
local original_string = "Hello, world!"
local pattern = "world"
local replacement = "Lua"
local new_string = original_string:gsub(pattern, replacement)
print(new_string) -- 输出 "Hello, Lua!"
在这个例子中,我们使用 .gsub()
函数将字符串 "Hello, world!" 中的 "world" 替换为 "Lua",得到新的字符串 "Hello, Lua!"。
Lua 中的正则表达式语法与其他编程语言中的正则表达式语法类似,但有一些特定的语法和功能。以下是一些常用的正则表达式语法:
.
:匹配任意字符。%d
:匹配数字。%a
:匹配字母。%s
:匹配空白字符。%w
:匹配字母、数字或下划线。%x
:匹配十六进制数字。%c
:匹配控制字符。%p
:匹配标点符号。%l
:匹配小写字母。%u
:匹配大写字母。*
:匹配前面的字符或子表达式零次或多次。+
:匹配前面的字符或子表达式一次或多次。-
:匹配前面的字符或子表达式零次或一次。?
:匹配前面的字符或子表达式零次或一次,但为贪婪匹配。^
:匹配字符串的开头。$
:匹配字符串的结尾。()
:分组。|
:或。[]
:字符集。[^]
:反向字符集。%
:转义字符。Lua 中的正则表达式还支持捕获组和非捕获组。捕获组使用括号 ()
包围,非捕获组使用 %(
和 )
包围。
以下是一个使用正则表达式的示例,用于从字符串中提取电子邮件地址:
local text = "My email address is john.doe@example.com."
local pattern = "([%w%._%-]+)@([%w_%-]+)(%.[%w_%-]+)+"
local match = text:match(pattern)
print(match) -- 输出 "john.doe@example.com"
在这个例子中,我们使用正则表达式从字符串 "My email address is john.doe@example.com." 中提取电子邮件地址 "john.doe@example.com"。
总之,Lua 中的正则表达式是一种强大的工具,可以用于各种字符串操作,如查找、替换、提取等。