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

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

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

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

156閲覧

条件式でRegexメソッドを使用する場合

SugiuraY

総合スコア317

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2018/06/27 05:11

特定の単語以外を削除する正規表現を検討しております。

VB

1Dim hoge As String 2Dim piyo As String 3 4hoge="明日の関東は晴れ"; 5piyo="関東"; 6if Regex.IsMatche(hoge, "(.*)piyo(.*)+") then //do something 7 8といったようにもしhogeのなかにpiyoの単語が含まれていればとう 9処理にしたいのですが、上記のコードでは実現できなかったため、どこに 10もんだいがあるのかご教示頂ければ幸いです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

if Regex.IsMatche(hoge, piyo) then ...

これでいいですよ


C#

1 // "ほげふが"を入れると、".げふが|ほ.ふが|ほげ.が|ほげふ."を返す 2 string makepattern(string text) 3 { 4 string res = ""; 5 for(int i = 0; i < text.Length; i++) 6 { 7 char[] temp = text.ToCharArray(); 8 temp[i] = '.'; 9 res += ((i!=0)?"|":"")+new string(temp); 10 } 11 return res; 12 }

C#ですが、こんなもんですかね

投稿2018/06/27 05:20

編集2018/06/27 07:42
y_waiwai

総合スコア87747

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

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

SugiuraY

2018/06/27 05:45

コメント有難うございます。大変助かりました。 正規表現を使わなくては出来ないと思っていたのですが不思議です。。 重ねてで申し訳ないのですが、piyoが関○や○東といったような場合 部分一致(+文字数一致)でTrueを返す方法はあるのでしょうか。 vb.netで不案内で誠に申し訳ございませんが宜しくお願い申し上げます。
SugiuraY

2018/06/27 06:13

早速コメント、誠に有難うございます。 Regex.IsMatch(hoge,"関.|.東")ではうまくいかなかったのですが ”明日の”や”晴れ”といった文字列があるからでしょうか? 重ねて申し訳ございませんが宜しくお願い申し上げます。
y_waiwai

2018/06/27 06:23

えー、具体的にどういう場合にマッチさせるってはなしかな?意味が読みきれてない
SugiuraY

2018/06/27 06:33

申し訳ございません。実際のケースにあてはめて具体的にコメントさせて頂きます。 hoge="明日の先発は髙木太郎と予想されております"//旧漢字が使われると一致しないので部分検索したい piyo="髙木太郎"; pattern="/.木太郎|髙.太郎|髙木.郎|髙木太./" if Regex.IsMatch(hoge,piyo) then dosomthingといったことを実装しようとしております。 2文字違いが生じる場合はあきらめようと思っています。 実はpiyoは配列で複数存在し、それぞれのpatternの文字列を作るためにpiyo.lengthで文字列の長さを取得してループさせてそれぞれの文字列連結をさせようと試みているのですがこれが試行錯誤してうまくいかないため、一旦直接patternを入れております。もしかするとこの点に問題があるのかもしれませんが。。
y_waiwai

2018/06/27 06:50

それなら".木太郎|髙.太郎|髙木.郎|髙木太." でいけるはずです "[高髙]木太郎" で、高木太郎、髙木太郎 でマッチ、鷹木太郎ではマッチしません
SugiuraY

2018/06/27 07:01 編集

有難うございます。[]のなかに任意の複数の文字を含めることもできるのですね。 やはりループ側に問題があるようです。。 最後にわがままで本当に申し訳ございませんが、{"髙木太郎","ジャッキー・チェン"}のようなデータがあるとして それぞれの文字列について以下のパターンをループで作ろうと思っています。 pattern=".木太郎|髙.太郎|髙木.郎|髙木太." pattern=".ャッキー・チェン|ジ.ッキー・チェン|ジャ.キー・チェン(以下省略)" piyo.Lengthで文字列をカウントして文字列連結でいけそうなのですが、"."と"|"が最初と最後が不規則なためうまく作成することができません。。実装するためにアドバイスがあれば頂けますでしょうか。 宜しくお願い申し上げます。
SugiuraY

2018/06/27 07:32

vb.netにはsubstr_replaceのように、n番目の文字列をreplaceするようなメソッドがないのですね。。
y_waiwai

2018/06/27 07:42

追記しました
SugiuraY

2018/06/27 09:30

有難うございます!無事実装することができました。 大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問