javascript - JavaScript 中的正则表达式以匹配没有单词边界的书写系统
问题描述
我试图在文本中检测是否存在属于没有单词边界的语言书写系统的字符。根据维基百科,这些书写系统如下(我添加了 ISO 639-2 或 639-3 代码)
Burmese MY
Chinese ZH
Japanese JA
S'gaw Karen KAR
Khmer KM
Lao LP
ʼPhags-pa PHAG
Pwo Karen PWO
S'gaw Karen KAR
Tai Tham LANA
Thai TH
Tibetan BO
在Chinese
我使用特定的正则表达式Han
编写系统的情况下:
HAN_REGEX = /[\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DB5\u4E00-\u9FD5\uF900-\uFA6D\uFA70-\uFAD9]/;
作为等价于\p{Han}
。中文象形文字的另一种解决方案是直接使用
let regexp = /\p{sc=Han}/gu;
因此,假设给定Kanji
Unicode 表,JA
在文本中检测的字符集范围是这个:
KANJI_REGEX = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/
但是其他书写系统呢?字符集范围是唯一的方法吗?
解决方案
这不会处理所有情况,因为我似乎无法获得关于如何识别连续脚本的良好参考,但它应该能让你大部分时间到达那里。
let regex = new RegExp(/[\p{Script_Extensions=Mymr}\p{Script_Extensions=Han}\p{Script_Extensions=Hira}\p{Script_Extensions=Kana}\p{Script_Extensions=Bopo}\p{Script=Khmer}\p{Script=Lao}\p{Script_Extensions=Phag}\p{Script=Tai_Tham}\p{Script=Thai}\p{Script=Tibetan}]/u)
Script_Extensions 将包括除基本字符之外的脚本的所有扩展字符,因此您通常最好尽可能使用 Script_Extensions。
- \p{Script_Extensions=Mymr} 应该匹配缅甸脚本中的任何字符(这是缅甸语、S'gaw Karen 和 Pwo Karen 似乎映射到的字符)
- \p{Script_Extensions=Han} 应该匹配汉字或汉字字符
- \p{Script_Extensions=Bopo} 应该匹配 Bopomofo 字符(因为 Hanb 是 Han+Bopo 但 unicode 没有组合脚本,这应该匹配其他汉字)
- \p{Script_Extensions=Hira} 应该匹配任何平假名字符
- \p{Script_Extensions=Kana} 应该匹配任何片假名字符
- \p{Script=Khmer} 应该匹配高棉脚本中的字符
- \p{Script=Lao} 应该匹配老挝脚本中的字符
- \p{Script_Extensions=Phag} 应该匹配 'Phags-pa 脚本中的字符
- \p{Script=Tai_Tham} 应该匹配 Tai Tham 脚本中的字符
- \p{Script=Thai} 应该匹配泰文中的字符
- \p{Script=Tibetan} 应该匹配藏文中的字符
并且由于没有设置 unicode 标志就不能使用 unicode 属性转义,因此记住传递 'u' 标志很重要。
推荐阅读
- python - MLPClassifier 只对不同的输入给出一个预测
- css - Next.js 全局 CSS 不能从您的自定义文件以外的文件导入
- python - 如何使用opencv消除小轮廓区域
- python - 带有 QIcon 的灰度 QPushButton 直到悬停
- reactjs - react router dom,替换浏览器url但不去页面
- php - $_POST["action"] == "编辑"
- basic - 在 Apple II、AppleDOS 3.3 上使用 Applesoft 的语法错误 GET
- node.js - 什么是 MongoDB 中的“连接”?
- c - 以 ' * ' 作为参数的错误
- reactjs - ReactJS POST fetch 不起作用,错误是:TypeError: Failed to fetch