文字列内のパターンを見つけるには、(無料のプログラムを使用して)任意の方法が必要です。
例えば:
私は検索します12321
文字列はdkaowkdlertrelkjh
検索文字列には特定のパターンがあります(最初と最後の文字は同じ、2番目と4番目は同じ、3番目は他のすべての文字とは異なります)
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")