非常普遍的情况下,但我失败了一次又一次试图解决它和建议的解决方案,我发现也有类似的问题。(我认为这个例子对于任何试图从大型代码或结构化文件(如日志)中提取特定信息集的人都是有用的)
示例字符串:
"123string1abcabcstring2123string3abc123string...nabc"
子串A:"123"
子串B:"abc"
假设我们想找到子串A和子串B之间的所有子串,但不是那些在B和A之间的子串,或者那些在A和B之间但也包含B的子串(“字符串1abc”不应该被打印)
控制台上打印的结果应如下所示:
string 1
string 3
string...n
这非常适合正则表达式,特别是
re.findall
来获得多个匹配:这将得到一个介于123和abc之间的字符序列。使用
.*?
而不是.*
是很重要的,这样它将匹配尽可能短的字符串,即直到第一次出现“abc”。否则它会匹配到字符串中的最后一个“abc”。你知道吗re
模块是解决此类问题的朋友:这样你甚至可以在变量中保留分隔字符串。。。你知道吗
当然,如果分隔字符串包含特殊字符,则应该对其进行转义。例如
ab(
我会写s1 = "ab\("
相关问题 更多 >
编程相关推荐