5

Facebook のハッシュタグ スクレーパーを作成しています。ハッシュタグを取得するために遭遇するすべての正規表現には、英数字だけでなく句読点も含まれているようです。これが私が望むものの例です:

こんにちは世界!私は #fac_book スクレーパー #m4king で、素敵な正規表現が欲しいです。

worldm4kingfacと一致させexpressionたい (スペースを含む句読点に達した場合は切り捨てたいことに注意してください)。ハッシュ記号が含まれていなければいいのですが、それほど重要ではありません。

念のため、Ruby の文字列スキャン メソッドを使用して複数のタグを取得します。

よろしくお願いします!

4

3 に答える 3

7

このような正規表現:#([A-Za-z0-9]+)必要なものと一致し、キャプチャ グループに配置する必要があります。後でこのグループにアクセスできます。おそらく、これは (Ruby コンテキストから) 正規表現に光を当てるのに役立つでしょう。

上記の正規表現は、#タグが見つかると照合を開始し、後続の文字または数字をキャプチャ グループにスローします。文字でも数字でもないものを見つけると、マッチングを停止します。最終的には、あなたが求めているものを含むグループになります。

于 2012-09-25T05:01:33.473 に答える
6
str = 'Hello #world! I am #m4king a #fac_book scraper and would like a nice regular #expression'
str.scan(/#([A-Za-z0-9]+)/).flatten #=> ["world", "m4king", "fac", "expression"]

各キャプチャ グループは独自の配列内にあるため、#flatten の呼び出しが必要です。

または、「#」の後の英数字のみに一致する後読み一致を使用できます。

str.scan /(?<=#)[[:alnum:]]+/ #=> ["world", "m4king", "fac", "expression"]
于 2012-09-25T09:29:21.823 に答える
2

より単純な正規表現を次に示し#[[:alnum:]_]/ます。現在、Facebook にはハッシュタグの一部としてアンダースコアが含まれているため (Twitter と同様)、アンダースコアが含まれていることに注意してください。

str = 'Hello #world! I am #m4king a #fac_book scraper and would like a nice regular #expression'
str.scan(/#[[:alnum:]_]+/)

Rubular に関する見解は次のとおりです: http://rubular.com/r/XPPqwtVGN9

于 2014-03-05T21:23:23.233 に答える