如何在python中使用标志';字符串表示法中的正则表达式?

如何在python中使用标志';字符串表示法中的正则表达式?,python,ply,Python,Ply,我需要将PLY用于解析器,PLY强制您在标记定义内的字符串位置编写正则表达式。例如(来源于): 我想知道如何使用这种符号编写更复杂的正则表达式,特别是如何为RE使用IGNORECASE标志。要启用ignore case标志,可以在正则表达式的开头使用(?I)。例如: def t_id(t): r'(?i)[a-z_][a-z0-9_]+' 您正在编写表达式r'\d+。这基本上没有任何作用。您没有将其分配给任何变量或以任何方式使用它。请提供一个你正在寻找的字符模式的例子\d表示正则表达式(i

我需要将PLY用于解析器,PLY强制您在标记定义内的字符串位置编写正则表达式。例如(来源于):


我想知道如何使用这种符号编写更复杂的正则表达式,特别是如何为RE使用IGNORECASE标志。

要启用ignore case标志,可以在正则表达式的开头使用
(?I)
。例如:

def t_id(t):
  r'(?i)[a-z_][a-z0-9_]+'

您正在编写表达式
r'\d+
。这基本上没有任何作用。您没有将其分配给任何变量或以任何方式使用它。请提供一个你正在寻找的字符模式的例子
\d
表示正则表达式(
import re
)中的某些内容,
r'\d+
不同于
r'\d?
,不同于
r'\d+*”
,这是文档()中的一个示例。PLY就是这样工作的。我需要将忽略大小写字母与一个非常简单的模式一起使用:字母“a”或a,但我想专门使用该标志,因为我想测试它,以便稍后在更复杂的模式中使用它。因此对于a或a,您可以执行
r“[a-a]”
,或者您可以添加另一个指令:
r”[a-a]+“
<代码>*使生成的RE与前一个RE的0个或多个重复匹配<代码>+使生成的RE与前一个RE的1个或多个重复匹配<代码>?导致生成的RE与前一个RESo的0或1个重复匹配根本无法使用忽略案例标志?我想特别地使用这个标志,我不想要一个解决方法。你必须使用这样的方法吗?
r'^(?I)[a-z_][a-z0-9_]+'
,以便它标记语句的开头。谢谢,这正是我想知道的。谢谢:)@hussam你不必在PLY中锚定正则表达式。
def t_id(t):
  r'(?i)[a-z_][a-z0-9_]+'