代码:
https://aaa.bbb.net/ccc/211099_589944494365122_1446403980_n.jpg
如何使用正则表达式从字符串中获取589944494365122
?
到目前为止,我能做的最好的事情是_(.*)
589944494365122_1446403980_n.jpg
答案 0 :(得分:2)
首先,您应该概括您的问题描述,例如:如何在字符串中的第一个_
之后获得最长的非空数字子串?你真正要求的正则表达式是(589944494365122)
,但这不是你所期望的。
根据我对你想要的猜测,答案可能是_(\d+)
。
答案 1 :(得分:1)
我会选择\d+_(\d+)_\d+_n\.jpg
,但根据网址的确切规格,这可能需要稍微调整一下。
另外,根据语言的不同,可能需要稍作修改。我建议的解决方案将在Ruby(以及许多其他正则表达式实现)中使用。这里\d
匹配任何数字,\d+
表示一个或多个数字。我认为.jpg
之前的字母始终为n
,但您可以通过将n
替换为.
(任何字符)或\w
(任何字词)来更改此字母字符)。
答案 2 :(得分:1)
我可以在您的输入中看到提取规则:
211099_589944494365122_1446403980
[0-9]+_ part we want _[0-9]+
所以带有后视和前瞻的正则表达式会有所帮助:
'(?<=\d_)\d+(?=_\d)'
用grep测试:
kent$ echo " https://aaa.bbb.net/ccc/211099_589944494365122_1446403980_n.jpg"|grep -Po '(?<=\d_)\d+(?=_\d)'
589944494365122
答案 3 :(得分:1)
这有效;
var s = "https://aaa.bbb.net/ccc/211099_589944494365122_1446403980_n.jpg";
var m = /_([^_]*)/.exec(s);
console.log( m[1] ); // 589944494365122