在正则表达式组中问号和x的含义

bea*_*rdc 5 regex textmate syntax-highlighting atom-editor

我正在尝试学习Atom的语法突出显示/语法规则,这些规则大量使用JS正则表达式,并且在python语法文件中遇到了一个不熟悉的模式.

该模式始于一个(?x)对我来说不熟悉的正则表达式.我在一个在线正则表达式测试器中查找它,似乎说它无效.我最初的想法是它代表了一个可选的左派,但我相信这些人应该在这里逃脱.

这只是Atom的coffeescript语法中的含义,还是我忽略了正则表达式的含义?

(这种模式也出现在我认为Atom来自的textmate语言文件中).

Bry*_*ant 4

如果该正则表达式在 Python 中进行处理,它将使用“verbose”标志进行编译。

来自Pythonre文档

(?aiLmsux)

(来自集合 'a'、'i'、'L'、'm'、's'、'u'、'x'中的一个或多个字母。)该组与空字符串匹配;这些字母设置相应的标志:re.A(仅 ASCII 匹配)、re.I(忽略大小写)、re.L(取决于语言环境)、re.M(多行)、re.S(点匹配所有)和re.X (详细),用于整个正则表达式。(这些标志在模块内容中进行了描述。)如果您希望将标志作为正则表达式的一部分包含在内,而不是将标志参数传递给 re.compile() 函数,则这非常有用。