アプリ版:「スタンプのみでお礼する」機能のリリースについて

文章に含まれる下記文字を抽出したいのですが、書き方を教えてください。

抽出したい文字 「#hogehoge 」  の「#」から最後の「半角スペース」までです。

上記文字が含まれている文章は
こんにちは #aiuoeo さん、#kakikukeko さん、私は・・・・
#hogehoge 先日の・・・

などの文章です。

先頭が必ず#とは限らず、最後も半角スペースではないので、
^#.*$/sなどではありません。

また、1回とは限らず複数回でてくることもあります。
正規表現で書くことは可能なのでしょうか。

初歩的な質問で大変申し訳ありませんが、どうぞ宜しくお願いいたします。

A 回答 (3件)

> 先頭が必ず#とは限らず、最後も半角スペースではないので、


この文章は大変わかりにくいですが、次の意味ですよね?
「行の先頭が必ず#とは限らず、行の最後も半角スペースとは限らないので、」


それで、抽出したい文字は
> 「#hogehoge 」  の「#」から最後の「半角スペース」までです。
とのことですが、この《最後の「半角スペース」まで》
という意味がまたよくわかりません。

例えば、
「#abc_123 def_456 ghi_789」
という行があった時、
「#abc_123 」までが抽出対象になりますか?
それとも、「その行の最後の半角スペースまで」という意味で
「#abc_123 def_456 」までが抽出対象になりますか?

前者であれば、「#.*? 」です。(*?は最短マッチ指定)
後者であれば、「#.* 」です。

それと、「半角スペースまで抽出」と書かれると、
抽出対象にその半角スペースを含めるという意味になると思いますが
正しいですか?
実際には「半角スペースの手前までを抽出」のではないですか?
そうであれば、正規表現式は
「(#.*?) 」や「(#.*) 」
のように抽出したい範囲を()で指定して正規表現検索し、
MatchオブジェクトのSubMatchesコレクションで()内の
部分を抽出します。


> また、1回とは限らず複数回でてくることもあります。
これは、RegExpオブジェクトのGlobalプロパティをTrueに設定して
正規表現検索すればよいです。

各キーワードの意味がわからなければ、RegExpオブジェクトの
説明を参照してください。
(参考)
http://msdn.microsoft.com/ja-jp/library/cc392403 …
    • good
    • 0
この回答へのお礼

返信が非常に遅くなりまして申し訳ありません。
丁寧な回答をありがとうございます。
無事、マッチング処理が行えました。

regexpの使用方法など教えてくださいましてありがとうございました。

お礼日時:2013/07/03 16:56

文の先頭、文の最後、と読めば矛盾しないですね。



正規表現は、どの言語でもほとんど同じですよ。
VBAでは、CreateObject(VBScript.RegExp)を使います。
パターンは"#[A-Za-z]+ "で。

詳しいことは「VBA 正規表現」で検索してみてください。
    • good
    • 0
この回答へのお礼

御礼が遅くなりまして大変申し訳ありません。

パターンの設定方法や参考文献を教えてくださいましてありがとうございました。
おかげで、今回の問題は無事解決できました。

ありがとうございました。

お礼日時:2013/07/03 16:58

>抽出したい文字 「#hogehoge 」  の「#」から最後の「半角スペース」までです。


>先頭が必ず#とは限らず、最後も半角スペースではないので、

これは矛盾しているように思えます。
また、提示された例ではどのようなマッチを望んでいるのかさっぱり分かりません。

・ 実際に検索対象となる文章を用いて、その文と希望するマッチ結果をペアで提示してください。
・ その際、伏せたい固有名詞などは適当に同じような単語に置き換えてもらってOkです。
・ 実際の文章に含まれていない記号やスペースを加えないでください。
・ パターンが複数ある場合はすべて列挙してください。イレギュラーなパターンは特に重要です。


対象文字列
1. 私はりんごを食べたいな。僕はスイカを食べたい。俺はびわを食べるよ。
2. みかん狩り、なし狩り、イチゴ狩りの日程。

期待するマッチ結果
1. りんご 、 びわ
2. みかん 、 なし
    • good
    • 0
この回答へのお礼

御礼が大変遅くなりまして申し訳ありません。
また、質問内容が曖昧でかつ矛盾のある内容となっておりまして申し訳ありませんでした。
質問の仕方など、気を付けます。

今回の問題につきましては、無事解決することができました。
どうもありがとうございました。

お礼日時:2013/07/03 17:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!