🖥
#python の #正規表現 で テキストを Twitter のハッシュタグスタイル にする例
- 単語境界
\b
でマッチさせて replace する
単語全て (ざっくり)
>>> re.sub(r'\b([A-Za-z][A-Za-z0-9]+)\b', "#\\1", "A whole new-world under_the_sea")
'A #whole #new-#world under_the_sea'
指定の単語
perlpythonruby
という文字列は置換されていないのが分かる
>>> re.sub(r'\b(ruby|perl|python)\b', "#\\1", "Do you like python or ruby? mixed perlpythonruby languate does not exist?")
'Do you like #python or #ruby? mixed perlpythonruby languate does not exist?'
大文字小文字を気にしないパターン
大文字の Ruby も置換されているのが分かる
>>> pattern = re.compile(r'\b(ruby|perl|python)\b', re.IGNORECASE)
>>> re.sub(pattern, "#\\1", "Do you like python or Ruby? mixed perlpythonruby languate does not exist?")
'Do you like #python or #Ruby? mixed perlpythonruby languate does not exist?'
元から存在するハッシュタグを無視する例
否定の look back を使う ?<!#
>>> re.sub(r'\b(?<!#)(ruby|perl|python)\b', "#\\1", "Do you like #python or ruby? mixed perlpythonruby languate does not exist?")
'Do you like #python or #ruby? mixed perlpythonruby languate does not exist?'
全部込み
>>> pattern = re.compile(r'\b(?<!#)(ruby|perl|python)\b', re.IGNORECASE)
>>> re.sub(pattern, "#\\1", "Do you like #python or ruby or Perl? mixed perlpythonruby languate does not exist?")
'Do you like #python or #ruby or #Perl? mixed perlpythonruby languate does not exist?'
Original by Github issue
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。
公開日時
2019-04-19
Discussion