Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua中的多线模式是什么?_Lua_Lua Patterns - Fatal编程技术网

Lua中的多线模式是什么?

Lua中的多线模式是什么?,lua,lua-patterns,Lua,Lua Patterns,我要多线比赛 /add val1::val2 通过这种模式工作 ^/add +(.+)::+(.+)$ 但不能在多行中工作 例如: /add line1 line2 :: linexx lineYY 测试了此模式,但不起作用 ^/add ([%w%s]*)::([%w%s]*) 匹配任何字符,包括\n。由于不希望匹配多行字符串,请明确排除\n,即使用[^\n]替换: ^/add +([^\n]+)::+([^\n]+)$ 测试: 应使用sflag使用多行模式我的文本是:/add lin

我要多线比赛

/add val1::val2
通过这种模式工作

^/add +(.+)::+(.+)$
但不能在多行中工作 例如:

/add line1
line2
::
linexx
lineYY
测试了此模式,但不起作用

^/add ([%w%s]*)::([%w%s]*)

匹配任何字符,包括
\n
。由于不希望匹配多行字符串,请明确排除
\n
,即使用
[^\n]
替换

^/add +([^\n]+)::+([^\n]+)$
测试:


应使用
s
flag使用多行模式我的文本是:
/add line1 line2::linexx lineYY
我希望此文本的模式第一个模式仅适用于一行,不适用于多行我使用了此
^/add+([^.]+):+([^.]+)$
并工作,但如果文本中有点字符,则不工作,例如:
/add line1 line2.:linexx lineYY
在第2行之后有点(.)并且不起作用,为什么?因为在括号内,
被解释为
%。
,所以
[^.]
表示任何非句点的内容。你想像@Yu Hao说的那样使用
[^\n]
local str1 = '/add val1::val2'
local str2 = [[/add line1
line2
::
linexx
lineYY]]

local pattern = '^/add +([^\n]+)::+([^\n]+)$'

print(str1:match(pattern))
print(str2:match(pattern))