如何在Lua中制作一个模式,只有当没有数字(普通或罗马数字)时才匹配?

我想制作一个模式,只有当字符串不包含阿拉伯或罗马数字时才匹配(请注意,罗马数字只能到X(10))

示例:

"Rock"                 <-- 匹配
"Rock IV"              <-- 不匹配
"Rock 4"               <-- 不匹配
"Rock Paper"           <-- 匹配
"Rock Paper Scissors"  <-- 匹配
"Rock Paper VIII"      <-- 不匹配
"Rock Paper 8"         <-- 不匹配

我的当前代码只允许使用1个单词和一个数字。我的目标是使它在存在数字时不匹配。 代码:

"^([^%s]+)$"

如标题所述,我正在使用Lua。我还可以注意到代码将用于其中一个fandom维基,因此语法应该匹配Scribunto语法。

点赞
用户2858170
用户2858170

无法想到任何一种匹配任何可能的单词需求的模式。

".*%s?[^IVXLCDM0-9]+$"

此模式匹配任何不以空格和数字结尾的字符串。

但这种模式不适用于包含罗马数字的单词,如“RockM”。

通常匹配某些东西比不匹配更容易。

如果您只想进行检查,仅搜索字符串中的 [0-9IVXLCDM] 可能更容易。

2020-05-29 14:55:27