python - 正则表达式捕获在 python 中使用私有(private)成员的代码,除非它是函数 def

标签 python regex python-2.7

我正在尝试编写一个正则表达式来捕获 python 中对私有(private)成员的任何使用,函数名称除外。

例如,以下应返回 true:

a = __something__
b.__something()
__bla = 5
a[__bla__]
... etc etc

但是下面的应该返回 false:

def __unicode__(self):
    ....

(因为它前面有“def”)

我写了这个表达式:

regexp = re.compile(r'(?!def\s)[^a-zA-Z^_\s]__[a-zA-Z]')

它适用于大多数情况,但出于某种原因,如果在 private 之前有空格,它总是返回 false,例如,这不会返回 true:

regexp.search("something = __private")

我在这里做错了什么?如果“(?!def\s)”前面有“def”,则“(?!def\s)”不应匹配,我处理两个下划线之前的空格,例如在“[^a-zA-Z^_\s]”中。那为什么它不起作用?

编辑:

虽然接受的答案对于正则表达式是正确的,但我建议查看 Padraic Cunningham 的答案以获得使用 ast 的更好解决方案。 谢谢,

最佳答案

你可以试试:

(?<!def\s)(\b__[a-zA-Z])

Example

source

关于python - 正则表达式捕获在 python 中使用私有(private)成员的代码,除非它是函数 def,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36253940/

相关文章:

python - Python如何观察Mongodb的Oplog变化

python - Azure 数据湖引发错误 - 确保授权 header 的值格式正确,包括签名

python - 我用字典将值分配给字符串列表。我如何对这些值求和?

r - Pig Latin Converter - 需要帮助弄清楚如何查找而不转换数字元素

performance - 使用条件语句加速 Python 嵌套循环

python - 从类中创建全局变量(从字符串)

python - 为什么 skimage 均值过滤器不适用于 float 组?

css - 不匹配 URL 无效

python - 正则表达式不会过滤掉日期时间上的正确文本

python - 变量不会更新