C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

【複雑条件】文字列から文字列を抜粋 /一条 (19/01/06(Sun) 15:21) #89826
Re[1]: 【複雑条件】文字列から文字列を抜粋 /WebSurfer (19/01/06(Sun) 15:41) #89827
  └ Re[2]: 【複雑条件】文字列から文字列を抜粋 /一条 (19/01/06(Sun) 16:09) #89828
    └ Re[3]: 【複雑条件】文字列から文字列を抜粋 /WebSurfer (19/01/06(Sun) 16:31) #89829
      └ Re[4]: 【複雑条件】文字列から文字列を抜粋 /一条 (19/01/06(Sun) 16:35) #89830
        ├ Re[5]: 【複雑条件】文字列から文字列を抜粋 /WebSurfer (19/01/06(Sun) 18:40) #89831
        └ Re[5]: 【複雑条件】文字列から文字列を抜粋 /鏡餅 (19/01/06(Sun) 20:53) #89832


親記事 / ▼[ 89827 ]
■89826 / 親階層)  【複雑条件】文字列から文字列を抜粋
□投稿者/ 一条 (1回)-(2019/01/06(Sun) 15:21:00)

分類:[.NET 全般] 

お世話になります。

現在スクレイピングソフトの開発にあたって、取得した文字列から特定文字列(主にURL)を抜粋しているのですが、

"http.+?\com" 現在この正規表現を使って http から com までの文字列を抜粋しています。

今回作りたいものとしましては、日本語を含むURLのみ抜粋する表現です。

http から com までの間で 日本語(ひらがなだけでも可)が入っているURLのみ抜粋になります。

https://hello/main.com     ☓抜粋しない
https://hello/こんにちは.com  ○抜粋する

一応今考えているモデルとしましては、
"http.+?\com" で文字列を取得し、日本語が含まれていれば別の文字列変数に格納というのを考えているのですが、
なかなかそれらしい構文を見つけれずにいます。
こうしたほうがいいよ、というのがありましたら

ご教授をお願いいたします。



[ □ Tree ] 返信 編集キー/

▲[ 89826 ] / ▼[ 89828 ]
■89827 / 1階層)  Re[1]: 【複雑条件】文字列から文字列を抜粋
□投稿者/ WebSurfer (1720回)-(2019/01/06(Sun) 15:41:25)
No89826 (一条 さん) に返信

> 今回作りたいものとしましては、日本語を含むURLのみ抜粋する表現です。

日本語は URL に使えないので、普通は URL エンコードされるはずですが、そういう場合
はどうするつもりなのですか?

例えば、Wikipedia の「日本語」のページの URL は、ブラウザによってはアドレスバーに
表示されときは、

https://ja.wikipedia.org/wiki/日本語

というように見えますが、実際は以下のようになっていると思うのですが・・・

https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E8%AA%9E

[ 親 89826 / □ Tree ] 返信 編集キー/

▲[ 89827 ] / ▼[ 89829 ]
■89828 / 2階層)  Re[2]: 【複雑条件】文字列から文字列を抜粋
□投稿者/ 一条 (3回)-(2019/01/06(Sun) 16:09:32)
ご回答有り難うございます。

盲点でした。
URLに関しては考え直します。

今後の為にお伺いしたいのですが、
<h1> から </h1> の間で日本語(ひらがなが含まれている場合のみ抜粋はできますか?
"<h1>.+?\</h1>"

海外のサイトにクロールした際に復帰点に戻すような処置の為です。
[ 親 89826 / □ Tree ] 返信 編集キー/

▲[ 89828 ] / ▼[ 89830 ]
■89829 / 3階層)  Re[3]: 【複雑条件】文字列から文字列を抜粋
□投稿者/ WebSurfer (1721回)-(2019/01/06(Sun) 16:31:33)
No89828 (一条 さん) に返信

> <h1> から </h1> の間で日本語(ひらがなが含まれている場合のみ抜粋はできますか?
> "<h1>.+?\</h1>"

前の話でもそうだったのですが、URL エンコードの問題がなかったとしても(生の日本語が URL に入ってい
たとしても)、質問者さんが言う「日本語」の定義を明確にしてもらえないと誰も答えられません。

IME パッドを使えますか? 一度開いて見てください。それのどの文字が日本語になるのでしょうか?

[ 親 89826 / □ Tree ] 返信 編集キー/

▲[ 89829 ] / ▼[ 89831 ] ▼[ 89832 ]
■89830 / 4階層)  Re[4]: 【複雑条件】文字列から文字列を抜粋
□投稿者/ 一条 (4回)-(2019/01/06(Sun) 16:35:00)
No89829 (WebSurfer さん) に返信
> ■No89828 (一条 さん) に返信
>
>><h1> から </h1> の間で日本語(ひらがなが含まれている場合のみ抜粋はできますか?
>>"<h1>.+?\</h1>"
>
> 前の話でもそうだったのですが、URL エンコードの問題がなかったとしても(生の日本語が URL に入ってい
> たとしても)、質問者さんが言う「日本語」の定義を明確にしてもらえないと誰も答えられません。
>
> IME パッドを使えますか? 一度開いて見てください。それのどの文字が日本語になるのでしょうか?
>

情報不足、申し訳ございません。
ひらがな が一つでも入っていれば日本語が含まれているという認識です。
カタカナ、漢字まで識別できればいいのですが、ひとまず、ひらがな で大丈夫です。
[ 親 89826 / □ Tree ] 返信 編集キー/

▲[ 89830 ] / 返信無し
■89831 / 5階層)  Re[5]: 【複雑条件】文字列から文字列を抜粋
□投稿者/ WebSurfer (1722回)-(2019/01/06(Sun) 18:40:23)
No89830 (一条 さん) に返信

その「ひらがな」というのは Unicode で U+3041 〜 U+3096 の範囲の文字で良いのですか?

であれば、分類:[.NET 全般] から .NET アプリということのようですので、その正規表現、

<h1>([\u3041-\u3096]+)</h1>

とかで考えれば良いのではないでしょうか?(未検証・未確認です。ご自分で正規表現を考えて
確認ください)
[ 親 89826 / □ Tree ] 返信 編集キー/

▲[ 89830 ] / 返信無し
■89832 / 5階層)  Re[5]: 【複雑条件】文字列から文字列を抜粋
□投稿者/ 鏡餅 (1回)-(2019/01/06(Sun) 20:53:21)
No89830 (一条 さん) に返信

「存在する」をどう表現するかですが
私が思いついたのは3通りです

・すべての文字列がひらがな以外であるわけではないとする
・ひらがな以外の文字列が含まれるかもしれないとする
・抜き出す正規表現とひらがなチェックの正規表現をわける

https://paiza.io/projects/Ucq2xVepE8yGvwpTkllAuA

私なら正規表現をわける方法を選びます
条件が複雑なときは簡単な処理の組み合わせにした方がわかりやすいので
好みの問題かもしれないですが
[ 親 89826 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -