Lua中的模式^[%w-.]+$表示什么意思?

3

我最近发现了这个模式,但我真的不太理解:

^[%w-.]+$

你能给我一些与此表达式相匹配的例子吗?

2
这很简单,我建议你多了解一下正则表达式。 - leppie
1
它会抛出一个错误。 - Avinash Raj
实际上,这是来自一个Lua脚本的代码: local return_domain_name = urlReq:match("^[%w-.]+$") - Badesign
1
这就是为什么正则表达式标签信息指出您应该始终在标签中包含正则表达式风格的原因。 - Tim Pietzcker
我移除了 regex 标签,因为 Lua 模式不是正则表达式,请参阅 其标签信息 以获取更多信息。 - Yu Hao
显示剩余2条评论
2个回答

6

在Lua中有效,其中%w(几乎)相当于其他语言中的\w

^[%w-.]+$ 表示匹配一个完全由字母数字字符(字母和数字)、短划线或点号组成的字符串。

解释

  • 锚点^断言我们在字符串的开头
  • 字符类[%w-.]匹配一个字母或数字(%w的含义),或短划线或点号。这会相当于JavaScript中的[\w-.]
  • +限定符匹配此类字符一次或多次
  • 锚点$断言我们在字符串的结尾

参考资料

Lua模式


3
实际上它将不匹配任何内容。因为有一个错误: w- 这是文本范围的开始,但顺序错了。所以应该使用 %w\- 代替。

^[%w\-.]+$

意思:

  • ^ 断言字符串开头位置
  • [%w\-.]+ 匹配列表中的单个字符
    1. + 量词:出现一次或多次,尽可能多地匹配 [贪婪模式]
    2. %w 列表中的单个字符 %w (区分大小写)
    3. \- 匹配字符 - (连字符)
    4. . 字面上的字符 .
  • $ 断言字符串结尾位置

编辑

由于原问题和标签已更改,因此本回答不再适用。这是基于POSIX的答案。

如@zx81评论所述:

  • %wLua中是\w,表示任何字母数字字符加“_”

2
提醒一下,你的答案已经不再适用了。结果发现,在Lua中,%w实际上是\ w。 :) - zx81
嗨@zx81,我会编辑它以放置信息,即它是基于POSIX的答案,并且它不再适用于OP更改了问题。谢谢。 - Jorge Campos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接