如何在Python中使用组补码?

时间:2011-05-03 07:43:35

标签: python regex

我在Python中寻找像r"[^\1]"这样的东西。 例如,我希望在文本中匹配像“hello”这样的单词,其中每个字母都被另一个字母替换(例如:“ a ”by“ z “,” b “by” r “,...)。 “你好”可以是“zcuuj”“prvva”,...我想对Python说:“找到一个以[a-z]开头的单词,然后一个字母像第一个字母,然后是相同的两个字母,然后是一个与其他字母不同的字母。

我尝试过这种模式:

r"([a-z])([^\1])([^\1\2]){2}([^\1\2\3])"

(不起作用)

这一个:

r"([a-z])((?!\1))((?!\1|\2)){2}((?!\1|\2|\3])"

(不起作用)

2 个答案:

答案 0 :(得分:1)

在这里试试

^([a-z])(?!\1)([a-z])(?!(?:\1|\2))(([a-z])\4)(?!(?:\1|\2|\4))[a-z]

我在线测试here on rubular

第二个例子的问题是,负前瞻断言是非消费的。这意味着你需要在检查完字符后对其进行消除。我在.和参考文献的每个前瞻后都会这样做。

您的第一个示例的问题是,您无法将这些引用放在字符组中。

更新:我更新了我的正则表达式和rubular链接,因为第一个版本在第一个版本之后允许使用除[a-z]之外的其他字符。

答案 1 :(得分:0)

根据documentation,您可以使用(?P<name>...)创建一个以后可以使用(?P=name)引用的命名组。