✅アイコン記法の後に文字を書くと解釈がおかしくなるのを修正する
例
[/icons/Twitter.icon]Twitter
https://gyazo.com/fa0fe8d6085622ddf408eb3c3e278e32
debugprint step3前処理時点
code:terminal
$ python test_pagetest.py
- アイコン記法の前後に文字
- アイコン記法の左側がカットされる件
- 大企業(大企業.md)に当てはまる性質(だとsta.icon(sta.icon.md)が思っていること) - 知的生産(知的生産.md)そのものを考えている感じでうおおおお俺得ってなったsta.icon*2(sta.icon*2.md) debugprint about 前半の remover
code:remover
RE_ICON_TO_REMOVE = re.compile(r'\(.+?\.icon(\*0-9+){0,1}\.md\)') def _icon_grammer_to_img_tag(line):
# sta.icon*3(sta.icon*3.md)
# ^^^^^^^^^^^^^^^
# まずこっちは要らないので消す
newline = re.sub(RE_ICON_TO_REMOVE, '', newline)
code:terminal
$ python test_pagetest.py
- アイコン記法の前後に文字
- アイコン記法の左側がカットされる件
- 大企業が思っていること) ★余分なところまで消えている 前半の消えてない部分はok
後半がまだ変わらん
https://gyazo.com/5d2bee037a71d4e2e3747fa9a00af092
青部分を消そうとしているが、赤部分が消されている
RE_ICON_TO_REMOVE = re.compile(r'(\])\(.+?\.icon(\*[0-9]+){0,1}(\.md){0,1}\)')
非貪欲指定しているのだが……
左から非貪欲にやっているわけだから、
- [大企業]( ここからスタートして非貪欲に始めるので、
- [大企業](大企業.md)に当てはまる性質(だと[sta.icon]( こうなりますねってこと?
やっぱりこうか
](xxxx) 今はここまでマッチさせているが
[xxx](xxxx) ここまでマッチさせた方がよい
これでもダメなんだが……
RE_ICON_TO_REMOVE = re.compile(r'(\[.+?\])\(.+?\.icon(\*[0-9]+){0,1}(\.md){0,1}\)')
RE_ICON_TO_REMOVE = re.compile(r'(\[)(.+?)(\])\((.+?)\.icon(\*[0-9]+){0,1}(\.md){0,1}\)')
もしかして.+?じゃダメで(.+?)とキャプチャする必要ある?
bf: RE_ICON_TO_REMOVE = re.compile(r'(\])\(.+?\.icon(\*[0-9]+){0,1}(\.md){0,1}\)')
af: RE_ICON_TO_REMOVE = re.compile(r'(\])\((.+?)\.icon(\*[0-9]+){0,1}(\.md){0,1}\)')
ダメだが
いや、非貪欲働いたらいけるはずだが
謎すぎる
後半で(\*[0-9]+){0,1}(\.md){0,1}この辺使ってるせいで非貪欲が効かなくなる、という罠があったりする?
{m,n}にも非貪欲があるらしいので一応やってみる
RE_ICON_TO_REMOVE = re.compile(r'\((.+?)\.icon(\*[0-9]+){0,1}?(\.md){0,1}?\)')
まあ結果変わらず(当たり前)
0 or 1 なんだから貪欲性はどうでもいい
非貪欲は {2,5}みたいに幅がある場合に、2に寄せたいか(非貪欲)5に寄せたいか(貪欲)を制御するのに使う
読んでるけど他にヒントなさそう
来た!
RE_ICON_TO_REMOVE = re.compile(r'\(([^\(\)]+?)\.icon(\*[0-9]+){0,1}(\.md){0,1}\)')
前半、.+? じゃなくて、()が来ないよねってことで[^\(\)]+?にした
ネストする場合は明示的に除外しないとダメってことかsta.icon
えー、非貪欲なんだからそんなことないと思うんだけど
これは正規表現の実装を知らないとわからないレベル(たぶん)……
done