今天,我正在学习正则表达式= D
我理解一些基础知识,例如\d+
匹配任意数量的数字,但我如何获得字符串r05c75
中'r'和'c'之后的值(数字是任意长度)
它们代表行和列值,我想提取'r'和'c'之间的数字以及'c'和$(字符串结尾)之间的数字。
我希望这个问题也可以解释为其他任何初学者。
一般情况是
aaa DDD bbb DDD ccc DDD (without spaces)
其中aaa,bbb,ccc和ddd是任意(已知)字符串,而D-triplets只是数字。
我可以“匹配”(检查有效性)我的字符串r05c75,但我不知道如何提取数字。
这可能是一个相当普遍的问题,如果我错过任何重复,我很抱歉。
答案 0 :(得分:2)
(?:\w+(\d+))+
是通用正则表达式,它只返回带有数字
(?: ... )
语法表示“非捕获组”,它允许我说它可以重复(使用+
)但不会显示在匹配组中。另一组(\d+)
没有?:
,因此会被捕获。
所以,请用英文阅读这个正则表达式,“匹配一个或多个一个或多个字母后跟一个或多个数字的组,哦,是的,捕获数字分组”。
答案 1 :(得分:0)
r(\d+)c
括号表示“捕获”的正则表达式概念......如果您搜索参考文档,他们应该告诉您更多相关信息。
答案 2 :(得分:0)
您可以使用parens提取值:
r(\d+)c(\d+)
这将为您提供$ 1中的行号和$ 2中的列号。
答案 3 :(得分:0)
通常,在使用正则表达式时,您可以将子表达式标记为一个组,并在成功匹配后检索该组内容。
在您的情况下,如果我们使用javascript正则表达式引擎,您可以将r95c75
的匹配写为:
var match = "r05c75".match(/r(\d+)c(\d+)/);
if ( match ) // if successfull match
{
var n1 = match[1];
var n2 = match[2];
}
n1,n2将包含数字。