- ベストアンサー
VB2005での正規表現
文字列から特定の条件をみたす単語を探す処理をしたいのですが。正規表現という言葉まではたどり着きましたが。まだ初めて間もないため私のレベルでは使い方がわかりません。すいませんが教えてもらえないでしょうか? 開発環境:Visual Basic 2005 Express Edition 例。PRINTERNAMEから始まりPORTNAMEまでの中の文字列を拾いたいのですが。PRINTERNAME**PORTNAME の**部分の文字列を抜き出したいのです。 すいませんがよろしくお願いいたします。
- ktksystem
- お礼率14% (7/48)
- Visual Basic
- 回答数4
- ありがとう数2
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> ()のカッコを含む文字列の場合はどのように正規表現であらわしたらいいのでしょうか? 正規表現を記述するときに特別な意味を持っているキャラクタ (メタ文字とかメタキャラクタといいます)を、 そのキャラクタ自体の意味で使いたい場合は、 その前に \ を置いてやれば良いです。 \(カッコに囲まれた文字列\) のような感じです。 正規表現の記述法にはイロイロ方言みたいなものがありますが、 とりあえずはこの辺で基本を抑えておくとよいかも。 サルにもわかる正規表現入門 http://www.mnet.ne.jp/~nakama/regexp1.html
その他の回答 (3)
- sakusaker7
- ベストアンサー率62% (800/1280)
基本的なやり方は↓を参照してもらうとして 正規表現を使って文字列を検索する: .NET Tips: C#, VB.NET, Visual Studio http://dobon.net/vb/dotnet/string/regexmatch.html 正規表現として (?<=PRINTERNAME).+?(?=PORTNAME) を使えばマッチオブジェクトの Valueを参照すればお望みの 部分が取れているはずです。
補足
さっそくsakusaker7に紹介していただいたサイトで質問の文字列パターンはなんとか解決したのですが。()のカッコを含む文字列の場合はどのように正規表現であらわしたらいいのでしょうか? "で囲えばいいのでしょうか?すいませんが教えてもらえないでしょうか? たとえば、RELATION ((**,000),,,,,,,)の**部分を抜き出したいのですが。そのまま()を使うと駄目でした。
- imogasi
- ベストアンサー率27% (4737/17068)
UNIX系と違いマイクロソフト系は正規表現は後追い敵ではないかと思います。 わたしなぞわかりませんが (1)MSワードの世界で検索演算子が豊富にある。2000以後か? (2)http://www.microsoft.com/japan/msdn/columns/scripting/scripting051099.aspx のようにVBScriptの世界では似たようなものができている (3)プログラムで組む。InStr、InStrRev 関数などを使って組む。 などいかがですか。(外部の方が検索に参加するような)汎用の検索でなければそう複雑ではないのでは?
お礼
アドバイスありがとうございます。INSTRという便利な関数があったのですね。参考にさせていただきます。
PRINTERNAME(.*)PORTNAME こんな感じ
関連するQ&A
- VB2005の正規表現について
文字列の中から特定の文字列を抜き出そうとしています。 例) <TD align=left noWrap bgcolor=#ffffff rowspan=2>AAA</TD> 例の文字列の中からAAAだけを抜き出すにはどのような正規表現を 用いたらよいでしょうか。 御教授下さい。 開発環境:Visual Basic 2005 Express Edition
- 締切済み
- Visual Basic
- VB2008 正規表現 うまくいきません [ ]?
VB2008にてプログラムを組んでいます。 RichTextBox に英文を流し込んでありますが、それに対して英単語を検索して、ハイライトするプログラムを組んでいます。 しかし、正規表現の表現方法が悪くうまく検索してくれません。 例えば、RichTextBox には次のような英文があります。 I have seen many chavette. 上記英文に対して、下記のような正規表現で検索しているのですが、 [ -]?have[ s,-]? "have s"がヒットしてしまいます。 その他、chavetteという単語も回避したいのにヒットしてしまいます。 どのように正規表現を訂正すればよいでしょうか。 ================================== 【have の前に"[ -]?"をつけた理由】 "chavette" のような単語を回避し、 "abc-have" のような単語や " have" のような前にスペースのある単語はヒットさせたいからです。 "?"は0か1文字という理由です。 【have の後ろに"[ s,-]?"をつけた理由】 "have-had-had" のような文字列や "haves" のようなsがつく単語や "have," のようなカンマつきの単語や "have " のような後ろにスペースのある単語はヒットさせたいからです。 "?"は0か1文字という理由です。
- ベストアンサー
- Visual Basic
- 「何とかで始まり、何とかで終わる」正規表現は?
例えば、kitaという文字列で始まりminamiという文字列で終わる部分を検索したい場合、どのような正規表現になるのでしょうか? 例えば、"kitahigasinisiminami"という文字列を"kfjdasudkitahigasinisiminamijuhjlkjndf"の中から検索したい場合なのですが。 よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現について
たくさんあるhtmlファイル内に特定の条件に該当するファイルを探したい場合の正規表現で、 <title>から</title>の間に「.jpg」や「%」といった特定の文字列を含んだ行を検索したいのですが、どのように書いたら良いでしょうか? お手数ですが、よろしくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現について
/^R|ruby$/ 上記のような正規表現があったとします。 この正規表現の【|】の判断がわかりません。具体的には、/^ $/という記述から 対象の文字列の先頭がRかrのどちらかで以降がubyと続く文字列にマッチという 意味だと解釈しているのですが違うのでしょうか? 具体的にはRubyという文字列かrubyという文字列の二つのうちどちらかにしか マッチしないとおもっていたのですが、 rrubyという文字列やRrubyという文字列にもマッチします。そもそもこの場合のR|rの箇所ですが、これはRかrのどちらかが先頭にあり 二文字目からはubyという文字列がつづきますよ。という正規表現ではないのでしょうか? かなりこまっています。 識者のかたご教授ください。
- ベストアンサー
- その他(プログラミング・開発)
- 正規表現にて質問があります。
テスト勉強をやっていて過去問をみたら正規表現の部分だけわからずにいます (1)α=(0|10)*2(1|00|010)+ (2)α=(ab|c)*c(bc|a)+ (3)α=(1|22)*a(333|4444)* (1)正規表現αが表す文字列内、文字列長が1のものすべてを列挙せよ (2)正規表現αが表す文字列内、文字列長が2のものすべてを列挙せよ (3)正規表現αが表す文字列内、文字列長が3のものすべてを列挙せよ (4)正規表現αが表す文字列内、文字列長が4のものすべてを列挙せよ の答えを教えてもらえないでしょうか? もしよろしければどうやってとけばいいかのアドバイスもお願いします
- 締切済み
- C・C++・C#
- 正規表現について教えてください。
正規表現について教えてください。 Oracleで開発を行っている者ですが、ネットや本で調べても わからない箇所がありましたので、ここに質問として挙げさせていただきます。 ご教示いただけると幸いです。 現在、下記のようなデータが入ったテーブルがあります。 ---------------------------------------------------------------------------------- ID | SENTENCE | REG_EXP ---------------------------------------------------------------------------------- 1 | <○○○:XXXX> | [^<][^:]+ ---------------------------------------------------------------------------------- 2 | <○○○:XXXX>→<△△△:XXXX> | ---------------------------------------------------------------------------------- 3 | ■■■■■<○○○:XXXX> | ---------------------------------------------------------------------------------- このテーブルを使って、アプリを作っているのですが、 期待動作としては、SENTENCEの列に入っている文字列を REG_EXPの列に入っているデータ(正規表現のパターン)で マッチした文字列を切り取るようにしたいのです。 例えば、IDが1の場合は○○○が切り取られるのが期待動作です。 (注.この動作は、REGEXP_SUBSTR関数を用いてSQLで実行します。) お聞きしたいのは、IDが2の場合は△△△を、IDが3の場合は○○○を、 配列の最初の要素に入れるには、正規表現をどのように記載すればよいのか、ということです。 ○、△、■、Xの部分は英数字、日本語のどれが入るのかはわかりませんが、 <や→、:などの全角記号のフォーマットはこのままになります。。 IDが2の正規表現は[^<:→]+[^<:→]+[^<:→]+ で試してみたのですが、 うまく出来ませんでした・・・。 テーブルの線の調整がうまくできず、 表が見づらくて申し訳ありませんが、 正規表現に詳しい方、ご教示をよろしくお願いいたします。
- 締切済み
- Oracle
お礼
度々すいませんでした。何とか解決できました。ありがとうございました。