【问题标题】:What is multi line pattern in Lua?Lua 中的多行模式是什么?
【发布时间】:2016-04-13 05:16:47
【问题描述】:

我要匹配多行

/add val1::val2

并通过这种模式工作

^/add +(.+)::+(.+)$

但不能在多行中工作 例如:

/add line1
line2
::
linexx
lineYY

测试了这种模式但不起作用

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

【问题讨论】:

  • 应该使用s标志的多行模式
  • 我的文本是:/add line1 line2 :: linexx lineYY 我想要这个文本的模式第一个模式只适用于一行,不适用于多行

标签: lua lua-patterns


【解决方案1】:

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

^/add +([^\n]+)::+([^\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))

【讨论】:

  • 我使用了这个^/add +([^.]+)::+([^.]+)$ 并且工作了,但是如果在文本中有点字符不起作用,例如:/add line1 line2. :: linexx lineYY 在 line2 之后有点 (.) 并且不起作用,为什么?
  • 因为括号内的. 被解释为%.,所以[^.] 表示任何不是句点的东西。你想用[^\n]就像@Yu Hao说的
猜你喜欢
  • 1970-01-01
  • 2012-05-13
  • 2019-11-11
  • 1970-01-01
  • 2011-05-18
  • 2012-07-26
  • 2017-05-16
  • 2019-01-18
  • 1970-01-01
相关资源
最近更新 更多