我知道我也问过类似的问题,但我想稍微修改一下,以适应新的特定用例。
我有一个字符串,如SIT,UAT
,称之为a1, a2
,其中a1
和a2
可以是由,
分隔的任何字符序列。也可以有任何数量的唯一元素,如a3
和a4
。这些a1
和a2
(最多aN
)元素在每个a1, a2
组合中只出现一次。
我需要一个python正则表达式,它允许我检查是否只有(SIT
和UAT
)存在于由,
分隔的特定字符串中,如果在输入的列表中有超过1个元素。
场景:
输入1:SIT,UAT
SIT,UAT
-应该与regex匹配UAT,SIT
-应该与regex匹配SIT
-应失败,因为SIT和UAT未同时存在UAT
-应失败,因为SIT和UAT未同时存在TRA,SIT,UAT
-应失败,因为只有SIT和UAT必须与其他元素一起存在,因为TRA未在输入列表中提供
先谢了!
3条答案
按热度按时间xwbd5t1u1#
你可能想在这里使用的正则表达式是:
示例Pandas代码:
如果你需要满足两个以上的预期CSV值,那么regex可能无法很好地扩展。在这种情况下,我建议将输入拆分为逗号,然后使用基本字符串函数:
jecbmhm32#
如果我没理解错的话,这是一个解决问题的方法。除非你的匹配值固定为
SIT,UAT
或者只有几个已知值,否则我建议你不要使用正则表达式,而是通过拆分列表来解决它。上面的代码对
match
字符串没有任何假设。如果你知道重复并不重要,你可以使用set
比较来代替list
。vof42yt13#
使用上述模式:
(?=^(SIT,UAT)|(UAT,SIT)$)
用于检查字符串是否匹配SIT,UAT或UAT,SIT...(?!(.*?,(?!SIT|UAT))+)
用于检查字符串是否与除SIT & UAT之外的任何元素都不匹配希望这个有用。