• ベストアンサー

正規表現で特定の文字集団以外の文字列があるとマッチする書き方

正規表現で特定の文字集団以外の文字列があるとマッチするというものです。"ABCDEFGHIJK0123456789"以外の文字が1つでもあればそれにマッチし、$1,$2...にそれらを格納する書き方が知りたいです。 たとえば、 "ACKL1-BZaF" なら、マッチして、そして $1にL $2に- $3にZa あと、正規表現の真髄は、よくNFA,DFAの違いがわかれば良いなど書いていますが、身近にこの違いがはっきるわかる事例ってありますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

普通の正規表現であれば [^...] で「...以外の文字」にマッチします. 「$1, $2, ... に格納したい」というのは, 言語によっちゃうなぁ.

その他の回答 (2)

noname#79209
noname#79209
回答No.3

#2です。 「bregExp.dll」は「BASP21」にあるDLLです。 http://www.hi-ho.ne.jp/babaq/basp21.html Access VBA等でも使えるので、非常に便利に使わせてもらっています。

noname#79209
noname#79209
回答No.2

検索される文字列がランダムな内容なら無理です。 また、該当するブロックが4つ以上ある場合もありますし... strMatched As String varArray as Variant strText as String strText = "ACKL1-BZaF" strMached = bregReplace("s/[A-K\d]+/\,/g",strText) '「ABCDEFGHIJK0123456789」があれば「,」に変換 strMached = bregReplace("s/\-/\,\-\,/g",strMached) '「-」があれば「,-,」に変換 strMached = bregReplace("s/\,+/\,/g",strMached) '「,」が連続していたら1個の「,」に変換 strMached = bregReplace("s/^\,+//",strMached) '行頭に「,」があれば削除 strMached = bregReplace("s/\,+$//",strMached) '行末に「,」があれば削除 varArray = bregSplit(strMached,",",0) '「,」を区切り記号として配列にする でバリアント型変数「varArray」に配列として取り込まれます。 ただし、「bregReplace」、「bregSplit」は「bregExp.dll」からエイリアス設定した関数名です。

関連するQ&A

専門家に質問してみよう