Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
alpha的Python正则表达式(alpha |位)*_Python_Regex_Lexical Analysis - Fatal编程技术网

alpha的Python正则表达式(alpha |位)*

alpha的Python正则表达式(alpha |位)*,python,regex,lexical-analysis,Python,Regex,Lexical Analysis,我试图生成一个python正则表达式来表示词汇分析器的标识符。我的做法是: ([a-zA-Z]([a-zA-Z]|\d)*) 当我在中使用此选项时: regex = re.compile("\s*([a-zA-Z]([a-zA-Z]|\d)*)") regex.findall(line) 它不会像应该的那样生成标识符列表。我是否构建了错误的表达式 表示形式的好方法是什么: alpha(alpha|digit)* 使用python re模块?如下所示: regex = re.compile(

我试图生成一个python正则表达式来表示词汇分析器的标识符。我的做法是:

([a-zA-Z]([a-zA-Z]|\d)*)
当我在中使用此选项时:

regex = re.compile("\s*([a-zA-Z]([a-zA-Z]|\d)*)")
regex.findall(line)
它不会像应该的那样生成标识符列表。我是否构建了错误的表达式

表示形式的好方法是什么:

alpha(alpha|digit)*
使用python re模块?

如下所示:

regex = re.compile(r'[a-zA-Z][a-zA-Z\d]*')
注意引号前的r以获得原始字符串,否则需要转义所有反斜杠

因为前面的
\s*
是可选的,所以您可以删除它,就像删除捕获组一样

如果要确保匹配前面没有数字,可以这样编写,并使用负查找
(?:


您的正则表达式很好,但有一些提示:您应该在正则表达式字符串前面加上
r
,使其成为原始字符串文字。此外,除非必须,否则不应该使用捕获组,如果需要使用括号,只需使用
(?:…)
语法即可。试试看
regex = re.compile(r'(?:^|(?<![\da-zA-Z]))[a-zA-Z][a-zA-Z\d]*')
regex = re.compile(r'(?:^|(?<![\da-z]))[a-z][a-z\d]*', re.I)