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

坚慧 发布于 2016/09/16 13:45
阅读 488
收藏 0
Lua

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

例如:

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



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


加载中
0
PatrickWQy
PatrickWQy
要用括号把linux和apache括起来吧(猜的)
0
坚慧
坚慧

引用来自“PatrickWQy”的评论

要用括号把linux和apache括起来吧(猜的)
试过了,没用
PatrickWQy
PatrickWQy
那我就不知道了,反正你这个不加括号的明显有歧义
0
燕玉苗
燕玉苗

我测试了一下发现,在lua中"|" 会被当做一个普通的字符来处理,有点鸡肋

0
Adonis_di
Adonis_di
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不支持正则表达式,如果非要的话就只能自己实现了。

返回顶部
顶部