Расщепление корейское и номер - PullRequest
0 голосов
/ 19 февраля 2019

Мне нужно отделить корейские буквы от двух чисел.

Корейская буква может состоять из одного-трех слов, что делает все еще более сложным.

Вот некоторые из диапазонов кодов корейского регулярного выражения Iзнать:

ㄱ ~ ㅎ: 0x3131 ~ 0x314e
ㅏ ~ ㅣ: 0x314f ~ 0x3163
가 ~ 힣: 0xac00 ~ 0xd7a3

Номер на передней панели всегда 4 цифры и 5 цифр для другого.

Вот несколько примеров:

2019개회54321
2017가51584
2019가행견16997

Что мне нужно, должновыглядеть так:

Var_A = "2019"
Var_B = "가"
Var_C = "23220"

Заранее спасибо;)

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Если вы действительно хотите использовать regex для решения этой проблемы (это не лучшее решение здесь, но может использоваться в других ситуациях):

# -*- coding: utf-8 -*-
import re

cjkText = '2019개회54321'
regex = re.compile(r'^(\d{4})([ㄱ-ㅣ가-힣]+)(\d{5})$')
m = re.search(regex,cjkText)
try:
  var_A, var_B, var_C = m.group(1), m.group(2), m.group(3)
  print var_A
  print var_B
  print var_C
except:
  print 'Input string incorrect'

Примечания:

ㄱ ~ ㅎ: 0x3131 ~ 0x314e
ㅏ ~ ㅣ: 0x314f ~ 0x3163
가 ~ 힣: 0xac00 ~ 0xd7a3

Первые два последовательных интервала можно сгруппировать в один большой сегмент ㄱ-ㅣ가-힣.

Выход:

2019
개회
54321

Regex demo: https://regex101.com/r/P9oIXS/1/

0 голосов
/ 19 февраля 2019

Здесь нет необходимости в регулярных выражениях.Поскольку вы знаете длину чисел, вы можете просто нарезать строку.

Чтобы получить первые 4 цифры:

yourString[:4]

Чтобы получить корейскую часть:

yourString[4:-5]

Чтобы получить последние 5 цифр:

yourString[-5:]

Если вы действительно хотите регулярное выражение, вы можете использовать это:

^(\d{4})([\u3131-\u3163\uac00-\ud7a3]+?)(\d{5})$

Не забудьте включить опцию re.UNICODE дляЮникод соответствия.Первые 4 цифры, корейский текст и последние 5 цифр будут в группах 1, 2 и 3 соответственно.

...