[英]How do I write a relevant REGEX pattern to extract sub-string of a larger text string in python
[英]Python 3: How do I determine the re-occuring sub-string/pattern within a string?
我正在处理涉及解码消息的CheckIO编码问题。 我必须从已完成的给定加密和解密消息中找到密钥; pythonpythonpythonpythonp
但是,当我使用相同的密钥尝试解密比该字符串长的消息时,它将失败,因为我只能从p而不是y重新启动它。 因此,我要么需要找到一种方法来在键中找到子字符串python,要么继续从y开始上述键。
我首先尝试找到密钥首字母的每个实例,然后假设每个首字母都将是密钥的开头,然后尝试从那里构建一个字符串.CheckIO上的此问题被标记为很简单,所以我显然在某处缺少了一些东西。
这就是我所拥有的,但是效率似乎并不高,它依赖于重复输入一个单词的关键。 如果在该短语中重复字母,例如checkiocheckioch失败,它也会掉落。 有更好的方法吗?
# assumes single word repetition in string
def find_string(strTest):
a = []
x = []
y = []
for b in range(0, len(strTest)):
a.append(strTest[b])
for c in range(0, len(a)):
if a[c] == a[0]:
x.append(c)
for d in range(0, len(x)-1):
y.append(x[d+1] - x[d])
if y.count(y[0]) == len(y):
intWholeStrings = len(strTest) // x[len(x) - 1]
return find_sub(intWholeStrings, y[0], strTest)
else:
return False
def find_sub(intCount, intLen, strTest):
a1 = strTest[:2]
for i in range(2, intLen):
for j in range(1, intCount+1):
if a1 in strTest[:intLen * j]:
a1 = a1 + strTest[i]
return a1
print(find_string('pythonpythonpythonpythonpyth'))
为了找到给定基本字符串的最大子字符串,我将使用以下方法:
import re
def get_largest_substring(string):
length = 0
x = 0
y = 0
for y in range(len(string)):
for x in range(len(string)):
substring = string[y:x]
if len(list(re.finditer(substring,string))) > 1 and len(substring) > length:
match = substring
length = len(substring)
return match
print get_largest_substring("pythonpythonpythonionpythonionspythonionsd")
这还允许在字符串中进行可能的更改,并且在您的算法会进行某些更改的情况下,也不会摇摆不定
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.