部分一致検索のシステムを作ろうと考えているのですが、途中が任意のものを含む部分一致検索が実装できないので、助言をお借りしたいです。
例えばこんなのです↓
本文(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で質問しましょう!
似たような質問が見つかりました
- 英語 語句節などの言葉の単位のことを、英語でなんと言いますか。 また、文の要素はElements of a 4 2023/06/26 14:38
- 英語 A healthy 20 centimeters tall の a がなぜ定冠詞でないのでしょうか? 2 2022/10/22 04:40
- UNIX・Linux bashでブランク(空白)を検索文字列として指定する方法 1 2022/04/13 22:29
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- 英語 A healthy 20 centimeters tall の a がなぜ定冠詞でないのでしょうか? 2 2022/10/14 05:21
- 英語 提示文の構造について 6 2022/08/25 10:40
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- 英語 関係代名詞「非制限用法」が説明する先行詞が無冠詞複数形の場合「一般的総称」と見なすことの可否について 10 2022/07/20 10:19
- 英語 提示文の構造について(名詞+be that V?) 2 2023/05/19 09:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
角カッコが含まれてるかどうか...
-
「何とかで始まり、何とかで終...
-
C++でofstreamに空白を含む文字...
-
バッチファイルの正規表現を利...
-
正規表現の否定先読みで、複数...
-
「abcで始まらない」を正規表現...
-
CSVファイルの中で、「 , 」カ...
-
EXCELからCSVにすると余計なカ...
-
Accessのテキストボックスの入...
-
英数字のみ全角から半角に変換
-
コマンドプロンプトでのsedの使...
-
Excel VBAでPDFファイルをMicro...
-
プログラミングでは、半角括弧...
-
エクセルで数値を全角文字(カ...
-
全角英数字の必要性が理解できない
-
VB2005のTextBoxでカン...
-
何故、日本は未だに数字を3桁...
-
パス区切りの文字について
-
python 大文字小文字を区別しな...
-
Excel VBA 教えてください。 VB...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「何とかで始まり、何とかで終...
-
VBA EXCEL あるセルの中の一...
-
「abcで始まらない」を正規表現...
-
正規表現の否定先読みで、複数...
-
バッチファイルの正規表現を利...
-
正規表現について
-
角カッコが含まれてるかどうか...
-
XML::Xpathで部分一致検索をす...
-
英数字混じり8文字以上の正規表現
-
正規表現 英数字を1つ以上含む...
-
C++でofstreamに空白を含む文字...
-
.htaccessで特定のドメインを弾...
-
文字列の否定の正規表現について
-
正規表現
-
Perl CSVファイルの複数条件で...
-
文字列から数値を抽出したいの...
-
[正規表現]特定の範囲のIPアド...
-
ログファイルからキーワードを...
-
長い文字列から特定の数字を取...
-
正規表現にて文字数をチェック...
おすすめ情報