質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

2回答

3019閲覧

特定の文字に続く場合を除去したい(Excel VBA)

Wolf

総合スコア38

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

1クリップ

投稿2017/01/23 00:03

編集2017/01/23 00:17

お世話になります。

下記は、アルファベット「T」と、それに続く通し番号を一つのパターンとして
抽出するマクロです。

temp = "T10T11PT12T13"

の中の、「PT12」を抽出しないようにしたいのですが、この場合、正規表現のパターンを
どのように記載すれば良いでしょうか。
※現状は、「PT12」も「T12」として抽出してしまいます。

Sub test() Dim myReg As RegExp Dim mc As Object Dim temp As String Dim buf() As String Dim i As Integer Dim j As Integer temp = "T10T11PT12T13" ' Microsoft VBScript Regular Expansions 5.5 を参照設定済み。 Set myReg = New RegExp With myReg .Pattern = "T\d*" .Global = True Set mc = .Execute(temp) If .test(temp) Then For j = 0 To mc.Count - 1 ReDim Preserve buf(i) buf(i) = mc(j) i = i + 1 Next End If MsgBox Join(buf, vbCrLf) End With End Sub

参考:
本プログラムは更にアレンジして、工作機械の加工プログラム(Gコード)編集に使用する予定です。
「T」は「ツール=刃物」を指していて、例えば「T10」は「10番目の刃物」ということになります。
Tの前にどのようなアルファベットや記号、数字が来ても意味が変わることはないのですが、唯一

PT

のときにだけ、「PTネジ」というネジの種類を指す言葉になります。そのため、加工プログラムの
コメント文に書かれた「PT1/8」を「T1」と見なしてしまう現象が発生し、苦慮しております。

ご教示のほど、宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

.Pattern = "P*T\d*"ではどうでしょうか?パターンがPTまたはTの場合のロジックです。

投稿2017/01/23 01:09

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Wolf

2017/01/23 01:16

回答、ありがとうございます。試してみました。 その場合、「PT12」として抽出してしまいますが、 後処理でPから始まるものを別途除外すれば、うまく いきそうです。
guest

0

先読み、後読み、正規表現 で調べると良いですよ。

(?<!P)T\d
とか?

https://abicky.net/2010/05/30/135112/

試してませんが、、、

投稿2017/01/23 00:45

hikochang

総合スコア648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Wolf

2017/01/23 00:52

早速の回答、ありがとうございます。ご教示いただいたリンク先などを確認してみます。 ちなみに、「(?<!P)T\d」で試してみたところ、「Excecuteメソッドは失敗しました」と エラーメッセージが出てしまいました(><)
hikochang

2017/01/23 03:54

vbsのregexpではサポートしてませんでした、、、 ごめんなさい。
Wolf

2017/01/23 09:04

いえいえ、そのような手法が使える場もあるということで、大変参考になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問