The match register is affected, though.
public checkUntil ( string $pattern ) : string | ||
$pattern | string | |
return | string |
public function testCheckUntil() { $s = new StringScanner("Fri Dec 12 1975 14:39"); $this->assertEquals("Fri Dec 12", $s->checkUntil('/12/')); $this->assertEquals(0, $s->pos); $this->assertEquals('12', $s->matched); }
function testCheckUntil() { $sc = new StringScanner("foobar blorg bla"); $res = $sc->checkUntil("bar"); $this->assertEqual($res, "foobar"); $this->assertEqual($sc->rest(), "foobar blorg bla"); $this->assertEqual($sc->getMatched(), "bar"); $sc->pos += 6; $res = $sc->checkUntil("\\s+"); $this->assertEqual($res, " "); $this->assertEqual($sc->rest(), " blorg bla"); $this->assertEqual($sc->getMatched(), " "); $sc->pos += 1; $res = $sc->checkUntil("(\\w+) (\\w+)"); $this->assertEqual($res, "blorg bla"); $this->assertFalse($sc->isEos()); $this->assertEqual($sc->rest(), "blorg bla"); $this->assertEqual($sc->getMatched(), "blorg bla"); $this->assertEqual($sc[0], "blorg bla"); $this->assertEqual($sc[1], "blorg"); $this->assertEqual($sc[2], "bla"); $sc = new StringScanner("foobar blorg bla"); $res = $sc->checkUntil("hihihi"); $this->assertEqual($res, null); $this->assertEqual($sc->rest(), "foobar blorg bla"); $res = $sc->checkUntil("bl[ab]"); $this->assertEqual($res, "foobar blorg bla"); $this->assertFalse($sc->isEos()); $this->assertEqual($sc->rest(), "foobar blorg bla"); $this->assertEqual($sc->getMatched(), "bla"); }