我正在Python中寻找类似r"[^\1]"
的东西。例如,我想在文本中匹配诸如 “hello” 之类的单词,其中每个字母都已被替换(例如:“a”被“z”替换) ”,“b”由“r”,...)。 “hello”可以是“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])"
(不起作用)
在这里试试这个
^([a-z])(?!\1)([a-z])(?!(?:\1|\2))(([a-z])\4)(?!(?:\1|\2|\4))[a-z]
我在线测试过here on rubular
第二个示例的问题是,否定先行断言是非消耗性的。这意味着您需要在检查后使用这些字符。我在每次使用 .
和引用进行前瞻之后都会执行此操作。
第一个示例的问题是,您无法将这些引用放入字符组中。
更新:我更新了我的正则表达式和 rubular 链接,因为第一个版本在第一个版本之后允许除 [a-z]
之外的其他字符。
我是一名优秀的程序员,十分优秀!