我正在尝试在javascript中创建一个正则表达式,它与第一个“ - ”之前的字母数字字符串中的最后5个非连续数字相匹配,如此...
以这两个字符串为例:
7356CH18PRZ2506-01
45D18A234-02-01
对于上面的每个例子,匹配将是:
82506
18234
根据客户要求,我们使用最后5个数字在我们的应用程序中创建唯一标识符,它们必须是数字。
我只能提取连续的数字,因为在每个例子中第一个“ - ”之前没有连续5个数字,所以我的所有尝试都没有成功。
我可能还应该提到,我不是正则表达式的最佳人选。我涉猎。
如果有人能指出我正确的方向,我将不胜感激。
此外,如果需要,我很乐意详细说明我的问题。
答案 0 :(得分:-1)
您可以使用df.replace(-np.Inf, np.nan)
match + replace
下面:
let arr = ['7356CH18PRZ2506-01', '45D18A234-02-01',
'012-45D18A234-02-01', 'foobar'];
let re = /^[^-]*((?:\d[^\d-]*){5})-/;
for (i=0; i<arr.length; i++) {
let m = arr[i].match(re);
if (m) {
console.log(arr[i], "=>", m[1].replace(/\D+/g, ''));
}
}
内,我们使用正则表达式match
匹配前5个数字,这些数字之间可能有0个或更多个非数字,后跟输入非常第一个连字符/^[^-]*((?:\d[^\d-]*){5})-/
,我们只删除所有带空字符串的非数字。