首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >删除除特定组合外的任何小写字符。

删除除特定组合外的任何小写字符。
EN

Stack Overflow用户
提问于 2019-11-18 15:09:41
回答 3查看 438关注 0票数 3

我有一个字符串:azjf8ee7Ldoge \n Hmeqze= AZ12D Fs \nsdfz14eZe148r

我想匹配所有小写字符,除非它是一个e,后面跟着一个数字 (e\d),或者是一个反斜杠,后面跟着n (\\n)。

根据我在这里找到的答案:

如何否定正则表达式中的特定词?

匹配除指定字符串以外的所有内容。

我设法找到了一个解决方案:(?!(e\d|\\n))[a-z],它工作得很好,只不过它与反斜杠后面的n匹配。

演示的链接

如何排除在n前面加上反斜杠的匹配?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-18 15:17:39

将任何e \n \n双字符序列保持为一个单数的,并在其他上下文中删除任何小写的ASCII字母。

代码语言:javascript
运行
复制
re.sub(r'(e\d|\\n)|[a-z]', r'\1', text)

regex演示

详细信息

  • (e\d|\\n) -在第1组(从替换模式中使用\1占位符)中匹配和捕获一个e和一个个位数或一个\和一个n字符
  • | -或
  • [a-z] -一个小写的ASCII字母。

\1还原结果中捕获的值。

如果你想玩围城,你可以用

代码语言:javascript
运行
复制
[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))。

票数 3
EN

Stack Overflow用户

发布于 2019-11-18 15:16:05

如果您想避免匹配\n,那么可以在regex中添加一个负的前瞻性断言:

代码语言:javascript
运行
复制
(?!e\d|\\n)[a-z](?<!\\n)

更新的RegEx演示

(?<!\\n)是负查找断言,它确保在匹配的[a-z]匹配后,我们不会在以前的位置上有[a-z]

票数 2
EN

Stack Overflow用户

发布于 2019-11-18 15:18:44

您可以匹配char并使用查看器:

代码语言:javascript
运行
复制
(?!e\d)[a-z](?<!\\[a-z])

各部分

  • (?!e\d)负前瞻,断言右边的不是e,后面跟着一个数字
  • [a-z]匹配char a-z
  • (?<!\\[a-z])负查找,断言左边的不是\,后面跟着char a-z。

Regex演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58917553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档