我需要验证某些东西是Ruby中的Excel单元格范围,即:" A4:A6"。通过观察,我正在寻找的要求是:
<Alphabetical, Capitalised><Integer>:<Integer><Alphabetical, Capitalised>
我不知道如何为此形成一个RegExp。 对于解决方案,我希望得到一个小解释,而不是纯粹的解决方案。
奖励是检查范围是否限制在行或列内。我认为这将超出正则表达式的范围。
我已尝试/[A-Z]+[0-9]+:[A-Z]+[0-9]+/
这可行,但最后允许使用额外的字符。
这不起作用,因为它允许将额外的内容添加到开头或结尾:
"HELLOAA3:A7".match(/\A[A-Z]+[0-9]+:[A-Z]+[0-9]+\z/)
也会返回一个匹配,但更多的是在正确的轨道上。
如何将数字范围限制为10000? 如何将字符数限制为3?
答案 0 :(得分:2)
这将同时执行以下操作:匹配Excel范围,并且它们必须是相同的行或列。 Stub
^([A-Z]+)(\d+):(\1\d+|[A-Z]+\2)$
A4:A6 // ok
A5:B10 // not ok
B5:Z5 // ok
AZ100:B100hello // not ok
这里的魔力是反向引用组:
([A-Z]+)(\d+) -- column is in capture group 1, row in group 2
(\1\d+|[A-Z]+\2) -- the first column followed by any number; or
-- the first row preceded by any character
答案 1 :(得分:1)
这是我的解决方案:
./script.csh
hello, argX
它包含命名范围,但不支持R1C1表示法。 该模式是用perl兼容的正则表达式方言编写的(即也可以与C#一起使用),我不熟悉Ruby,所以我不能区分它,但你可能想看看这里:{{ 3}}