
私は、「#」または「@」で始まる部分文字列を除外する正規表現を作成しています。私はそれらからツイートをフィルタリングしようとしています。現在、文字列に「#」または「@」で始まる単語が含まれているかどうかに関係なく、すべてに一致します。
((?!\#)|(?!\@)).*
以下の文字列では、太字の部分すべてを一致させたいのですが、それ以上は一致させません。
こんにちは、シャー・ルク。次の映画で共演する俳優は誰ですか?@iamsrk #マレーシアからの愛 #askSRK
単語間の空白を太字にしたいのですが、どうすればいいでしょうか? ちなみにこれは Python で使用されます。
答え1
'@' または '#' で始まる部分文字列を除くすべての一致については気にしないでください。私はその逆を行い、Python で re.sub を使用して文字列からそれらを削除します。
>>> import re
>>> text = 'Hi shah rukh. Who is your co-actor in the upcoming movie? @iamsrk #lovefrommalaysia #askSRK'
>>> text = re.sub(r'([\#\@].*?)(?=([\r\n ]|$))', '', text).strip()
>>> print text
Hi shah rukh. Who is your co-actor in the upcoming movie?
簡単な説明:
- 一致するグループ #1
([\#\@].*?)
は、# または @ とそれに続く最短の文字をグループ化します (非貪欲)。 - 肯定的な先読みは
(?=([\r\n ]|$))
、結果に含めずに、復帰、改行、スペース、または文字列の末尾のいずれかに一致しようとします。
この解決策がどれほど優れているかは分かりませんが、私の用途には適しています。試してみてくださいregexr.com