我有一个.CPP
文件,有两种类型的字符串
CHAR
字符串的特点是它们只出现在引号中。你知道吗
WCHAR
字符串的特点是它们出现在字母L
前面的引号中
字符串字符示例:
"char string"
字符串WCHAR示例:
L"wchar string"
我想找到文件中的所有CHAR
(并且只找到它们),然后找到文件中的所有WCHAR
(并且只找到它们)
这是我目前拥有的代码。他知道如何找到引号之间的字符串:
import re
#find all strings between ""
re.findall('"([^"]*)"', f.read())
#find all strings between L""
re.findall('L"([^"]*)"', f.read())
我怎么告诉他只要在第一个字母之前没有字母L
,就只给我带引号之间的字符串?你知道吗
下面是一个示例文件:
#include <stdio.h>
int main()
{
printf(L"very long first wchar\
cuple of line\
string");
printf("regular char string");
printf(L" wchar short string in bracket");
printf("short string in bracket");
printf("very long\
cuple of line\
string");
printf(L"very long wchar\
cuple of line\
string");
}
你可以用
如果组1是None,则将匹配项附加到CHAR类型的字符串,否则匹配的字符串是WCHAR类型,您可以获取组2的值。你知道吗
细节
(?s)
-DOTALL修饰符使.
匹配任何字符(?<!\\)
-前面没有\
的位置(?:\\\\)*
-零个或多个连续的双反斜杠(以避免在文字反斜杠后匹配转义引号)(L)?
-第1组:可选的L
"
-双引号([^"\\]*(?:\\.[^"\\]*)*)
-第2组:[^"\\]*
-除反斜杠和"
以外的任何0+字符(?:\\.[^"\\]*)*
-0+连续出现的\\.
-任何用反斜杠转义的字符[^"\\]*
-除反斜杠和"
以外的任何0+字符"
-结束双引号。你知道吗参见regex demo和Python demo:
输出:
相关问题 更多 >
编程相关推荐