正则表达式搜索是否保证返回第一个匹配?

Kub*_*uba 5 python regex

我正在寻找一种方法来返回字符串中给定正则表达式的第一个匹配.它看起来就像re.search我正在寻找的方法.

但是,文档没有明确说明是否保证从搜索方法返回第一个匹配项.

该文档声称该方法"扫描字符串",它告诉我它从字符串的开头这样做.

但是我需要一些强有力的论据.仅仅是测试一个cat1被发现cat1cat2是不够的.

最好的是对官方文档或实现的暗示.

Kha*_*lid 5

我不想阅读代码re.search,因为它有很多.然而,如果我们看的代码re.sub,我们可以看到它使用re.search,并且re.sub 保证更换模式的最左边的发生.因此,re.search必须归还它.

相关代码来自_sre.c(评论取代冗长的无关代码)

static PyObject*
pattern_subx(PatternObject* self, PyObject* ptemplate, PyObject* string,
             Py_ssize_t count, Py_ssize_t subn)
{
    // init stuff...
    while (!count || n < count) {

        state_reset(&state);

        state.ptr = state.start;

        status = sre_search(&state, PatternObject_GetCode(self));
        // Do the replacement...
Run Code Online (Sandbox Code Playgroud)

编辑:

感谢@Veedrac打开这个问题,文件已经澄清说明了

扫描字符串,查找正则表达式模式产生匹配的第一个位置,并返回相应的匹配对象.