我正在写一个快速的Python脚本来对我们的一些Hibernate映射文件进行一些检查。我试图使用Python的这一点,以获得一个POJO的表名,它的类路径是否被完全定义:Python中的反斜杠正则表达式
searchObj = re.search(r'<class name="(.*\\.|)' + pojo + '".*table="(.*?)"', contents)
但是 - 说POJO是“为MyObject” - 正则表达式不匹配它这一行:
<class name="com.place.package.MyObject" table="my_cool_object" dynamic-insert="true" dynamic-update="true">
如果我打印字符串(而在PDB停止)我用搜索,我看到:
'<class name="(.*\\\\.|)MyObject".*table="(.*?)"'
我很困惑,什么错这里。首先,我的印象是'r'前缀使得反斜杠不会被转义。即便如此,如果我删除了反斜杠的一个这样的,我的搜索字符串是这样的:
searchObj = re.search(r'<class name="(.*\.|)' + pojo + '".*table="(.*?)"', contents)
和字符串搜索变得
'<class name="(.*\\.|)MyObject".*table="(.*?)"'
它仍然没有返回匹配。这里有什么问题?我打算使用的regex表达式适用于regex101.com(在显然有问题的区域只有一个反斜杠)。任何想法在这里出了什么问题?
@Keatinge - 为什么是不是匹配,那么,当我只有一个反斜杠?正则表达式应该基于该网站。另外 - 如果它只是MyObject,它匹配,但如果它是com.place.package.MyObject,它不会。 –