The first one won’t store the capturing group, e.g. $1
will be empty. The ?:
prefix makes it a non capturing group. This is usually done for better performance and un-cluttering of back references.
In the second example, the characters in the capturing group will be stored in the backreference $1
.
Further Reading.