
部分一致検索のシステムを作ろうと考えているのですが、途中が任意のものを含む部分一致検索が実装できないので、助言をお借りしたいです。
例えばこんなのです↓
本文(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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA EXCEL あるセルの中の一...
-
「何とかで始まり、何とかで終...
-
エクセルで数値を全角文字(カ...
-
住宅にカナを入力する際に丁目...
-
VBA 文字に半角が含まれて...
-
CSVファイルの中で、「 , 」カ...
-
word差し込み印刷 半角カタカ...
-
EXCELからCSVにすると余計なカ...
-
マクロを使ってフォルダー内に...
-
文字コードの%E3%80%とは何です...
-
エクセルの区切り位置の設定方法
-
WORDで改ページすると時々グレ...
-
秀丸エディタで、「-」や「ー」...
-
Excelについて質問です。 セル...
-
IEからEdgeへの移行に伴うIMEの...
-
漢数字の変換
-
C言語でテキストファイルの内容...
-
数字が全角、コンマなし
-
海外のケータイ(GSM携帯)はハ...
-
カンマ区切りの数字をCSVフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「何とかで始まり、何とかで終...
-
角カッコが含まれてるかどうか...
-
VBA EXCEL あるセルの中の一...
-
正規表現 英数字を1つ以上含む...
-
バッチファイルの正規表現を利...
-
正規表現の否定先読みで、複数...
-
「abcで始まらない」を正規表現...
-
正規表現で
-
.htaccessで特定のドメインを弾...
-
文字列の否定の正規表現について
-
英数字混じり8文字以上の正規表現
-
|。ってなんですか? 正規表現
-
Perlの壁
-
浮動小数点数について
-
正規表現
-
正規表現のパターン " [^<]*?>"
-
正規表現 指定文字列以外の記述法
-
CASLIIの穴埋め問題について。
-
【abc】に【完全一致】する正規...
-
VBAのInstrについて
おすすめ情報