Регулярное выражение для соответствия строковым литералам С++ (L "...")

Я ищу регулярное выражение для соответствия широким строковым литералам в исходном коде C++, т.е. Тем, которые начинаются с капитала L:

L"Hello World!"

На линии может быть несколько литералов, и она не должна соответствовать L", " в следующем примере:

"some string literal ending in L", "another string literal"

Какой лучший способ сделать это?

1 ответ

Это регулярное выражение частично решает проблему, сопоставляя последний литерал L -string (и все ранее):

(^[^"\r\n]*(?:"[^"\r\n]*"[^"\r\n]*)*)L"([^"\r\n]*)"

Это позволило мне повторно искать и заменять регулярное выражение этой заменой:

\1u"\2"

который был достаточно хорош для моей задачи (заменив L -literals на u -literals).

licensed under cc by-sa 3.0 with attribution.