部分一致検索のシステムを作ろうと考えているのですが、途中が任意のものを含む部分一致検索が実装できないので、助言をお借りしたいです。
例えばこんなのです↓
本文(Sentence)
The apple which he points is red.
フレーズ(pattern)
The apple ~ is red
この場合The apple ~ is red という流れのフレーズが本文に含まれているので、変数Sentenceに変数patternが含まれると判定し、true結果を示したいです。
result = "aBBBa" Like "a*a"のようにlike文が有用かなとも思ったのですが、文字列を直接入れるような形でないとできないようなので、これでは実用性に欠けてしまいます(複数のフレーズの判定ができないので)
変数に対応した形で実装したいです。
よろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>result = "aBBBa" Like "a*a"のようにlike文が有用かなとも思ったのですが、
>文字列を直接入れるような形でないとできないようなので、これでは実用性に欠けてしまいます
というのは、以下のようなことができないといっています?
(イミディエイトで試してますが、できますけど。)
(1)変数が使えないといっている?
testdata = "This is a pen"
check_left = "This "
check_right = "pen"
?testdata like check_left & "*" & check_right
True
testdata2 = "That's a pen"
?testdata2 like check_left & "*" & check_right
False
(2)複数の条件がチェックできないといっている?
check1_left = "This "
check1_right = "pen"
check2_left = "That's "
check2_right = "pen"
testdata = "This is a pen"
?(testdata like check1_left & "*" & check1_right) or (testdata like check2_left & "*" & check2_right)
True
testdata2 = "That's a pen"
?(testdata2 like check1_left & "*" & check1_right) or (testdata2 like check2_left & "*" & check2_right)
True
testdata3 = "That is a pen"
?(testdata3 like check1_left & "*" & check1_right) or (testdata3 like check2_left & "*" & check2_right)
False
条件の数が多いなら、
左側(check_left)と右側(check_right)の文字列を配列に入れて、for ~ nextでif文つけて、
1個ずつチェックする処理にすればいいですが。
上記ではないとしたら、もう少し具体的にお願いできますか。
★ところで、この検索は気をつけないと
The apple ~ is red を求めようとして、
The appleton is redrawed on this map.
(こんな英語あるのかな)
とかがでてくることがありえますのでご注意を。
appleの直後に空白を入れるのはいいとして、redの後ろに空白入れると
The apple made in Japan is red.
が対象にならないとか。
.や,は別扱いにするとか考慮する必要あるかもしれませんよ。
また、大文字、小文字の問題で、
Today,the apple is Red yet.
が見つからないとかもおきます。
## と、似たような検索機能を作ったことある人からの余談でした。。。
No.2
- 回答日時:
InStrを使って出来ます。
「The apple ~ is red」を例に取れば、まず、「The apple」が本文で最初に存在する位置を求めます。あれば、次に「is red」について本文の先ほどの位置プラス「The apple」の文字数分以降に存在するかを求めます。存在すれば「The apple ~ is red」としてTrueになります。第一引数を本文、第二第三引数をフレーズ1,2とでもしてTrue/Falseを返すようにすればいいでしょう。
No.1
- 回答日時:
>result = "aBBBa" Like "a*aのような、プログラム・コードを入れた書き方でなく
文章で、TRUEを返したい例文を5個程度挙げてみたらどう。
自分で分析した事項の文章表現も出来るなら書いてみるとか。
質問では、コードは回答者に任せ、したいことを文章表現する、に徹せよ。
aBBBaは何を言いたいのかよくわからない。
ーー
例の
>本文(Sentence)
The apple which he points is red.
フレーズ(pattern)
The apple ~ is red
も文法的に言えば、S+V+Cの文型というよなことまで踏み込むのか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「何とかで始まり、何とかで終...
-
「abcで始まらない」を正規表現...
-
正規表現の否定先読みで、複数...
-
角カッコが含まれてるかどうか...
-
CSVファイルの中で、「 , 」カ...
-
EXCELからCSVにすると余計なカ...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
住宅にカナを入力する際に丁目...
-
CSVの定義
-
CString から LPCTSTRの型に変換
-
マクロを使ってフォルダー内に...
-
IEからEdgeへの移行に伴うIMEの...
-
Excel VBAでPDFファイルをMicro...
-
VBA 置換文字がみつからない時
-
プログラミングでは、半角括弧...
-
COBOL・全角判定
-
WORDで改ページすると時々グレ...
-
.NET3.5におけるキーボードの「...
-
データにカンマが入ったCSVデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「何とかで始まり、何とかで終...
-
VBA EXCEL あるセルの中の一...
-
「abcで始まらない」を正規表現...
-
角カッコが含まれてるかどうか...
-
正規表現の否定先読みで、複数...
-
バッチファイルの正規表現を利...
-
入力された文字列が、LD22000を...
-
C++でofstreamに空白を含む文字...
-
XML::Xpathで部分一致検索をす...
-
【abc】に【完全一致】する正規...
-
名前の重複チェック
-
長い文字列から特定の数字を取...
-
空白の制御
-
foreach について
-
正規表現 英数字を1つ以上含む...
-
英数字混じり8文字以上の正規表現
-
正規表現にて文字数をチェック...
-
VBAのInstrについて
-
正規表現について
-
マクロ・VB得意な人へ。指定し...
おすすめ情報