我需要任何方式(使用任何免费程序)在字符串中查找模式。
例如:
我搜索12321
字符串是dkaowkdlertrelkjh
搜索字符串具有特定模式(第一个和最后一个字符相同,第二个和第四个相同,第三个与所有其他字符不同)
在字符串中,这与部分匹配,ertre
dkaowkdl**ertre**lkjh
因为它遵循相同的模式。
关于如何做到这一点的任何想法?
你可以自己写。这并不难,我们所要做的就是找到如何匹配重复组。我是一名 python 程序员,所以我的解决方案是在python上。
在re 模块的帮助下,我们发现我们可以像这样命名匹配的组(?P<name>...)
,然后像(?P=name)
.
就是这个。我们将使用作为模式描述符的字母模式(不是数字)——它有点简单,让我们能够在内存中存储更多组。
import re
def GenerateRegexp(patternDescription, anySequence='.+'):
'''
Creates string regexp, that will describe our ABCAB-pattern in terms of regexp
'''
used = []
regexp = ""
for character in patternDescription:
if character not in used:
regexp += "(?P<%s>%s)" % (character, anySequence) # we should be more attentive here if we expect % here, we can use str.format instead, but still might have a problem with {} symbols
used.append(character)
else:
regexp += "(?P=%s)" % character
return regexp
def Matches(string, pattern):
'''
Returns a bool answer, wheter string matches our pattern
'''
r = generate_regexp(pattern)
SearchPattern = re.compile(r)
return bool(SearchPattern.match(string))
使用示例(检查 aabbaabb 字符串是否匹配 'abab' 模板(您的语言中为 1212)):
print Matches (patternDescription="abab", string="aabbaabb")