我有一个字符串:azjf8ee7Ldoge \n Hmeqze= AZ12D Fs \nsdfz14eZe148r
。
我想匹配所有小写字符,除非它是一个e,后面跟着一个数字 (e\d
),或者是一个反斜杠,后面跟着n (\\n
)。
根据我在这里找到的答案:
我设法找到了一个解决方案:(?!(e\d|\\n))[a-z]
,它工作得很好,只不过它与反斜杠后面的n
匹配。
如何排除在n
前面加上反斜杠的匹配?
发布于 2019-11-18 15:17:39
将任何e
\n
和\n
双字符序列保持为一个单数的,并在其他上下文中删除任何小写的ASCII字母。
re.sub(r'(e\d|\\n)|[a-z]', r'\1', text)
详细信息
(e\d|\\n)
-在第1组(从替换模式中使用\1
占位符)中匹配和捕获一个e
和一个个位数或一个\
和一个n
字符|
-或[a-z]
-一个小写的ASCII字母。\1
还原结果中捕获的值。
如果你想玩围城,你可以用
[a-z](?<!e(?=\d))(?<!\\n)
re.sub(r'[a-z](?<!e(?=\d))(?<!\\n)', '', text)
请参阅另一个regex演示
[a-z](?<!e(?=\d))(?<!\\n)
模式匹配任何ASCII小写字母([a-z]
),该小写字母不是e
后面跟着一个数字((?<!e(?=\d))
),也不是n
前面的n
((?<!\\n)
)。
发布于 2019-11-18 15:16:05
如果您想避免匹配\n
,那么可以在regex中添加一个负的前瞻性断言:
(?!e\d|\\n)[a-z](?<!\\n)
(?<!\\n)
是负查找断言,它确保在匹配的[a-z]
匹配后,我们不会在以前的位置上有[a-z]
。
发布于 2019-11-18 15:18:44
您可以匹配char并使用查看器:
(?!e\d)[a-z](?<!\\[a-z])
各部分
(?!e\d)
负前瞻,断言右边的不是e
,后面跟着一个数字[a-z]
匹配char a-z(?<!\\[a-z])
负查找,断言左边的不是\
,后面跟着char a-z。https://stackoverflow.com/questions/58917553
复制相似问题