Я ищу регулярное выражение для соответствия широким строковым литералам в исходном коде C ++, т. Е. Начинающимся с заглавной буквы L
:
L"Hello World!"
В строке может быть несколько литералов, и они не должны совпадать L", "
в следующем примере:
"some string literal ending in L", "another string literal"
Какой лучший способ сделать это?
Это регулярное выражение частично решает проблему путем сопоставления последнего L
строковый литерал (и все до этого):
(^[^"\r\n]*(?:"[^"\r\n]*"[^"\r\n]*)*)L"([^"\r\n]*)"
Это позволило мне многократно искать и заменять регулярные выражения этой заменой:
\1u"\2"
что было достаточно для моей задачи (замена L
-литералы с u
-literals).
Других решений пока нет …