我四处寻找,但找不到答案。你知道吗
我想找一个3个字母的模式,其中2个字母应该是D或E,第三个字母可以是任何东西。顺序也不重要。你知道吗
例如:DEA或ESD或DZE或PDE都应该匹配。
对于像这样的示例字符串“ededededede”,还应该检测重叠模式,因此“EDE”、“DED”、“EDE”、“DED”、“EDA”、“DAD”、“ADE”、“DED”、“EDE”都应该在搜索中。你知道吗
我能想到的是:[A-Z][DE]{2}|[DE][A-Z][DE]|[DE]{2}[A-Z]
但这看起来很笨拙。有更简单的解决方案吗?你知道吗
谢谢。你知道吗
Tags:
怎么样:
说明:
看到它的实际效果:
https://regex101.com/r/uo7tv8/2
Python实现:
输出:
根据评论编辑:
输出:
试试这个模式
(?=[^\s]{0,2}D)(?=[^\s]{0,2}E)...
它首先确保后面是一个包含
D
和E
的单词(除空格外的字符串,由nagativa字符类[^\s]
实现)。你知道吗每个字母都有单独的正面展望:
(?=[^\s]{0,2}D)
对于D
(?=[^\s]{0,2}E)
表示E
。你知道吗如果满足这些条件,则用
...
匹配三个字符。你知道吗Demo
你不需要正则表达式;没有正则表达式可读性更好。你知道吗
如果您还需要验证长度,只需在检查字母之前保持
len(s) == 3
。你知道吗如果需要使用regex,this answer似乎已经涵盖了细节。你知道吗
Edit:请注意,这假设字符串中必须同时存在D和E,这与提供的示例相匹配,但不是真正的问题语句,前提是问题语句并不完全准确。
相关问题 更多 >
编程相关推荐