言語処理100本ノック 2020「28. MediaWikiマークアップの除去」
(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note)
27本目に続き、↓をベースに実装しました。 qiita.com
ファイルの除去に関しては、上記サイトとは異なり、内部リンクマークアップの除去とは別パターンでマッチさせました。
(内部リンクマークアップの除去にて、表示文字の箇所にlangテンプレートを含む場合も検知できるように改造したため)
+以下、実装している上での学び等のメモです。
正規表現の記法
?:
後方参照(キャプチャ)しないグループ化。^
行頭だけではなく、文字の否定も表すことができる。
文字クラス([xyz]
のように使うパターン)の最初の括弧の直後に^
が来ていたら、「否定」
※例:[^|]
=|
以外の文字にマッチするパターン
テンプレート
+自分の方では、Cite webテンプレート、centerテンプレートも行けそうだったので、除去してみました。
lang
仮リンク
Cite Web
center
言語処理100本ノック 2020「27. 内部リンクの除去」
(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note)
上記まとめにも記載した解説記事より、マッチングパターンを流用しました。 qiita.com
\[\[(?:[^|]*?\|)??([^|]*?)\]\]
このマッチングパターンの仕組みは、素人の言語処理100本ノック:27 で細かく説明されています。
正規表現のメタ文字列を1個ずつ追うことができたので良かった...!
言語処理100本ノック 2020「24. ファイル参照の抽出」
正規表現の最短一致を使います。
→ 量指定子, ?を組み合わせる
www-creators.com
言語処理100本ノック 2020「22. カテゴリ名の抽出」
(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note)
「括弧でパターンの一部を抽出」できればOKです。
下記サイトの、正規表現パターンの活用例 → 括弧でパターンの一部を抽出
note.nkmk.me
言語処理100本ノック 2020「19. 各行の1コラム目の文字列の出現頻度を求め,出現頻度の高い順に並べる」
(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note)
cut -f 1 popular-names.txt | sort | uniq -c | sort -r -k 1 -t ' '
sort -r -k
のk
オプションで、1, 3, 1000等数字をどれにしても出力結果が変わらないのは何故?
→ ※考え&調査中
言語処理100本ノック 2020「18. 各行を3コラム目の数値の降順にソート」
(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note)
sortのtオプションでタブ区切りを指定する時は、先頭に$マークを付ければOKです。
qiita.com
ただ、Ubuntuだとこの書き方は出来ないみたいです...。
単に-t \t
と指定してみたらうまく動きました。
-t 列の区切り文字を指定する。デフォルトはスペース。 -t, でコンマ区切りになる。 bashやzshでは -t $'\t' でタブ区切りのファイルを処理できるようになる。 Ubuntuの /bin/sh の実態はdashで、dashではこのタブの書き方ができない。
言語処理100本ノック 2020「12. 1列目をcol1.txtに,2列目をcol2.txtに保存」
(まとめ: 言語処理100本ノック 2020年版を解いていく。 - mocchaso note)
区切り文字をタブにしたい時は、何も指定しなくてOK
→ cut
のデフォルト区切り文字はタブ
takuya-1st.hatenablog.jp