0

文字列内のパターンを見つけるには、(無料のプログラムを使用して)任意の方法が必要です。

例えば:

私は検索します12321

文字列はdkaowkdlertrelkjh

検索文字列には特定のパターンがあります(最初と最後の文字は同じ、2番目と4番目は同じ、3番目は他のすべての文字とは異なります)

ertre dkaowkdl**ertre**lkjh文字列では、同じパターンに従うため、これはパーツと一致します。

これを行う方法について何かアイデアはありますか?

4

1 に答える 1

2

自分で書くことができます。それほど難しいことではありません。繰り返しグループを一致させる方法を見つけるだけです。私は 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")    
于 2013-01-15T12:29:19.373 に答える