【问题标题】:How to match the start or end of a string with string.match in Lua?如何将字符串的开头或结尾与 Lua 中的 string.match 匹配?
【发布时间】:2022-03-31 00:38:20
【问题描述】:

我正在使用它来匹配出现在两个单词之间的文本:

a1 = "apple"
a2 = "bear"
match_pattern = string.format('%s(.*)%s', a1, a2)
str = string.match(str, match_pattern)

如何在字符串的开头和数字或数字和字符串的结尾之间进行匹配?

【问题讨论】:

  • -1:在the documentation中很容易找到答案
  • 嘘,这里的人对别人很苛刻。 “RTFM”似乎与该网站的精神相反。 lua 文档可能很容易搜索,但很难理解。我希望我能自己回答这个问题,但是已经发现文档难以理解,我也来这里寻找答案。祝你好运!

标签: lua


【解决方案1】:

字符串开头与数字匹配还是数字与字符串结尾匹配?

^ 在模式的开头将其锚定到字符串的开头。 $ 在模式的末尾将其锚定到字符串的末尾。

s = 'The number 777 is in the middle.'

print(s:match('^(.*)777')) --> 'The number '
print(s:match('777(.*)$')) --> ' is in the middle.'

或匹配任何数字:

print(s:match('^(.-)%d+')) --> 'The number '
print(s:match('%d+(.*)$')) --> ' is in the middle.'

第一个模式稍有改变以使用非贪婪匹配,它将匹配尽可能少的字符。如果我们使用.* 而不是.-,我们将匹配The number 77

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 2021-11-06
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多