  The realization of quantum algorithms relies on specific quantum compilations
according to the underlying quantum processors. However, there are various ways
to physically implement qubits in different physical devices and manipulate
those qubits. These differences lead to different communication methods and
connection topologies, with each vendor implementing its own set of primitive
gates. Therefore, quantum circuits have to be rewritten or transformed in order
to be transplanted from one platform to another. We propose a pattern
matching-based framework for rewriting quantum circuits, called QRewriting. It
takes advantage of a new representation of quantum circuits using symbol
sequences. Unlike the traditional way of using directed acyclic graphs, the new
representation allows us to easily identify the patterns that appear
non-consecutively but reducible. Then, we convert the problem of pattern
matching into that of finding distinct subsequences and propose a
polynomial-time dynamic programming-based pattern matching and replacement
algorithm. We develop a rule library for basic optimizations and use it to
rewrite the Arithmetic and Toffoli benchmarks from the $G_{IBM}$ gate set to
the $G_{Sur}$ gate set. Compared with the existing tool PaF, QRewriting obtains
an improvement of reducing depths (resp. gate counts) by 29\% (resp. 14\%).
