4
回答
lua正则如何处理“或”(|)这个运算符
华为云实践训练营,热门技术免费实践!>>>   

lua正则如何处理“或”(|)这个运算符

例如:

str="my name is linux"
pattern1 = "linux|apache"
pattern2 = "linux"
string.find(str,pattern1) --不能匹配
string.find(str,pattern2) --能够匹配



lua中,有没有办法处理类似pattern1这样的正则?


Lua
举报
坚慧
发帖于1年前 4回/376阅

引用来自“PatrickWQy”的评论

要用括号把linux和apache括起来吧(猜的)
试过了,没用
--- 共有 1 条评论 ---
PatrickWQy那我就不知道了,反正你这个不加括号的明显有歧义 1年前 回复
mystring = {}
function mystring.find(str, pattern)
	local va1, va2 = string.find(pattern, '|')
	local patterntable = {}
	if va1 ~= nil then
		table.insert(patterntable, string.sub(pattern, 1, va1 - 1))
		table.insert(patterntable, string.sub(pattern, va1 + 1, string.len(pattern)))
	end

	va1, va2 = string.find(str, patterntable[1])
	if va1 == nil then
		va1, va2 = string.find(str, patterntable[2])
	end
	return va1, va2
end

str = "my name is linux"
pattren1 = "linux|windows"
va1, va2 = mystring.find(str, pattren1)

print(va1, va2)

查了一下Lua不支持正则表达式,如果非要的话就只能自己实现了。

顶部