accessの正規表現で、マッチした部分の一部を取り出したいと思っています。
秀丸で言えば、
------------------------
文字列 あいうえお
↓↓↓
正規表現 あ(.*)お
置き換え文字 \1
↓↓↓
抽出 いうえ
------------------------
って感じの「¥1」みたいなのがほしいと考えています。
現在、下記のような感じで、対象文字を抽出しています。
ここから、また正規表現でほしい部分を抽出しなければいけないのでしょうか?
【上の例で言えば、「あいうえお」を抽出する関数】
------------------------
Function 抜き出し(ByVal 指定文字列 As String) As String
Dim 正規表現, 一致集団, 一致要素
Set 正規表現 = CreateObject("VBScript.RegExp")
正規表現.Pattern = "購入日時[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日 [0-9]{1,2}時[0-9]{1,2}分"
正規表現.MultiLine = True
Set 一致集団 = 正規表現.Execute(指定文字列)
For Each 一致要素 In 一致集団
抜き出し = 一致要素.Value
Exit For
Next
End Function
------------------------
これだと、
購入日時2012年1月25日 17時53分
がマッチします。
でもほしいのは、
2012年1月25日 17時53分
の部分だけ。
何かいい方法は無いでしょうか?
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
今日を。
正規表現で解決するとすれば次のようになります。
Sub test()
Dim sss As String
sss = "aaaa購入日時2012年1月25日 17時53分bbbbcccc購入日時2012年1月25日 17時53分dddd"
' sss = "aaa"
sss = 抜き出し(sss)
Debug.Print sss
End Sub
Function 抜き出し(ByVal 指定文字列 As String) As String
Dim 正規表現, 一致集団, 一致要素
Set 正規表現 = CreateObject("VBScript.RegExp")
正規表現.Pattern = "購入日時([0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日 [0-9]{1,2}時[0-9]{1,2}分)"
'パターンを括弧で囲む
正規表現.MultiLine = True
Set 一致集団 = 正規表現.Execute(指定文字列)
'正規表現.Global = True を指定していないので、一件だけ抽出する。
Debug.Print 一致集団.Count
If 一致集団.Count > 0 Then
抜き出し = 一致集団(0).SubMatches(0)
'.SubMatches(0) 'Patternを()でククッタ箇所取り出し
End If
End Function
それ以外に、置き換えで、"購入日時"を空白にするとか
Right関数で、4文字を取り除くとか
ありがとうござます。
複雑なので、よくわかっていませんが、ゆっくり解読したいと思います。
なんか、SubMatchesで出来そうな気がします。
ありがとうございました。
No.2
- 回答日時:
#1で回答したものです。
前の回答をづぎの物に代えて、実行してみてください。
正規表現.Pattern = "購入日時([0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日 )([0-9]{1,2}時[0-9]{1,2}分)"
抜き出し = 一致集団(0).SubMatches(1)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- PHP SQLとPHPの連結方法がわからないのでアドバイスお願い致します 1 2022/07/12 12:16
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
「平成」を感じるもの
「昭和レトロ」に続いて「平成レトロ」なる言葉が流行しています。 皆さんはどのようなモノ・コトに「平成」を感じますか?
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
2024年のうちにやっておきたいこと、ここで宣言しませんか?
2024年も残すところ50日を切りましたね。 ことしはどんな1年でしたか? 2024年のうちにやっておきたいこと、 よかったらここで宣言していってください!
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
文字列からタブコードを取り除きたい
Visual Basic(VBA)
-
VBAのRegExpで後方一致/不一致は機能するが前方一致/不一致は機能しない件(仕様ですか?)
Microsoft ASP
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
正規表現でカウントアップ(?)す...
-
文章中全ての半角カッコ ( の...
-
正規表現でAND検索はできる...
-
文字列検索(grepのようなもの)...
-
正規表現 秀丸エディタ 行頭か...
-
Chr(13)とChr(10)の違いは?
-
PS4コントローラーをPCでゲーム...
-
エクセルでアルファベットか数...
-
1文字って1バイトだったっけ?
-
EBCDIC⇒SJIS変換の方法
-
VBAでの Replace関数で、ワイル...
-
EXCELで=より左の文字を一括で...
-
std::stringからLPCWSTR型への変換
-
Googleスプレッドシートでワイ...
-
cout と cerrの違い
-
Excel セル内の最初と最後の改...
-
Excelで指数表現しないようにす...
-
エクセルで文字列をtxtファイル...
-
MS SQLServer のSQLで文字列の...
-
Windows Formアプリからコンソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
正規表現 秀丸エディタ 行頭か...
-
正規表現でAND検索はできる...
-
メールアドレスの正規表現について
-
正規表現でシングルクォーテー...
-
C言語のコメントを「正規表現」...
-
正規表現です。括弧内にある複...
-
第二水準漢字が含まれるか?
-
金額を検索する正規表現について
-
VB.NET で正規表現を使用した検...
-
MFCで正規表現
-
文章中全ての半角カッコ ( の...
-
vbaの正規表現で、マッチした一...
-
Mで始まりuで終わる文字列
-
[VBS] テキストファイルから任...
-
正規表現で文字クラスの引き算
-
C言語にパターンマッチってない...
-
正規表現で( , -, ] を表すと。
-
Excel2007で正規表現置き換え
-
正規表現で、00で始まる画像をg...
-
正規表現で一致しない(否定)場...
おすすめ情報