尽管它们与正则表达式在一起,但只得到 3 位和 3 位无字

Get only 3 digit and 3 digit without word although they are together with regular expression

我是正则表达式的初学者。对于我的情况,我有一个问题,即字母和数字可能有 space 或可能没有像这样的 space。

4473 333hello 564 394844he hello

我需要服用 333, 564

我这样试过,还是不行。我该怎么办?

print(re.findall(r'\b\d{3}\b', "4473 333hello 564 394844he hello")) //it give ['564']


print(re.findall(r'\w+[0-9]{3}\w+', "4473 333hello 564 394844he hello")) // it give ['39484he']

尝试this

const regex = /\D\d{3}\s?/g;
const str = `4473 333hello 564 394844he hello
`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    m.forEach((match, groupIndex) => {
        console.log(`Found match, group ${groupIndex}: ${match}`);
    });
}

试试这个:

(?<!\d)\d{3}(?!\d)

Regex101

详情:

  • (?<!\d) - 否定后视以确保匹配前没有数字
  • \d{3} - 匹配 3 个数字
  • (?!\d) - 负前瞻以确保匹配后没有数字。