拆分韩文和数字

时间:2019-02-19 08:31:38

标签: python regex split cjk

我需要将韩国字母与两个数字分开。

韩文字母可以是一到三个单词,从而使一切变得更加复杂。

以下是我所知道的一些韩国正则表达式代码范围:

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

前面的数字始终是4位数字,而其他数字始终是5位数字。

以下是一些示例:

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

我需要的东西应该像这样:

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

预先感谢;)

2 个答案:

答案 0 :(得分:2)

这里不需要正则表达式。既然知道数字的长度,就可以对字符串进行切片。

要获取前4位数字:

yourString[:4]

要获得朝鲜语部分:

yourString[4:-5]

要获取最后5位数字:

yourString[-5:]

如果您真的想要正则表达式,可以使用此:

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

请记住为Unicode匹配打开re.UNICODE选项。前4位数字,韩语文本和后5位数字分别位于第1组,第2组和第3组中。

答案 1 :(得分:0)

如果您真的想使用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

正则表达式演示https://regex101.com/r/P9oIXS/1/