Skip to content

Instantly share code, notes, and snippets.

@tsuchm
Created June 5, 2020 01:29
Show Gist options
  • Save tsuchm/8cc585dcea86e9e3f1a31c80f70c67f5 to your computer and use it in GitHub Desktop.
Save tsuchm/8cc585dcea86e9e3f1a31c80f70c67f5 to your computer and use it in GitHub Desktop.
#!/usr/bin/python3
import regex as re
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
re_quantity = re.compile(r"""
((?:各|お?好みで|あれば|約|軽く)?
(人数
|適量
|てきりょう
|適当に?
|適宜
|数滴
|少々
|しょうしょう
|(?:ごく)?少量
|(?:ほんの)?少し
|ちょっぴり
|お?(?:好み|このみ)(?:で|の?量で?)?
|お?[好す]きな(?:だけ|量|分)
|半分
|半量
|ひとつ
|ふたつ
|(?:ひと|一|1|ふた|二)(?:つまみ|つかみ|掴み|かけら?|にぎり|握り|ふり|振り|まわし|回し|たらし)
|多[め目]に?
|余った
|たっぷり[とめ]?
|たくさん
|あるだけ
|食べたい分?(?:だけ)?
|食べる分?(?:だけ)?
|数[枚本]
|半身
# 計量用単位(大さじ等)が前置される場合
|(?:[大中小](?:さじ|匙)?|(?:おお|こ)さじ|カップ|コップ|お?茶碗|お玉|(?:ティー)?スプーン)
(?:[\d一二三四五六七八九〇]+(?:(?:[/.]|分の)[\d一二三四五六七八九〇]+)?
(?:[-~・+と]([\d一二三四五六七八九〇]+(?:(?:[/.]|分の)[\d一二三四五六七八九〇]+)?))?|半)
(?:杯|はい|ぱい)?分?
# 計量用単位(kg等)が後置される場合
|(?:[大中小LMS]|大きめ|小さめ)?(?:サイズ)?
(?:[\d一二三四五六七八九〇]+(?:(?:[/.]|分の)[\d一二三四五六七八九〇]+)?
(?:[-~・+と]([\d一二三四五六七八九〇]+(?:(?:[/.]|分の)[\d一二三四五六七八九〇]+)?))?|半)
(?:[個コこ本枚袋包箱缶瓶片束わ把枝丁房杯合尾匹腹膳玉株粒人滴切節台包つヶケgL]
|グラム|㌘|kg|㎏|キロ
|かけ|カケ|欠片|カット|切れ|つまみ|パック
|ネット|カップ|cup|cc|㏄|CC|ml|リットル|ℓ|cm|㎝|センチ)
# 計量用単位なしに単に数字だけの場合
|(?<!(?:ID\s*[::==]?|調味料|材料|たれ|具|手順|※)\s*\d*)
(?:[\d一二三四五六七八九〇]+(?:(?:[/.]|分の)[\d一二三四五六七八九〇]+)?
(?:[-~・+と]([\d一二三四五六七八九〇]+(?:(?:[/.]|分の)[\d一二三四五六七八九〇]+)?))?)
)
(?:[くぐ]らい|ほど|程度|[半分強弱前位~])?)
\Z
""", re.VERBOSE)
for line in sys.stdin:
line = line.rstrip()
match = re_quantity.search(line)
if match:
print(match.group(1))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment