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))