- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
UTS#18 中描述了各种级别的 Unicode 正则表达式支持。 .
有没有办法对每个需求进行一些测试,因此可以将测试移植到相关语言,运行它们并收集结果?
其他 Unicode 文档是否也有支持级别的概念,例如。 G。用于字符串实现/库?
最佳答案
作为记录,ICU4C 和 Perl 都支持 UTS#18 Level 1 以及几个重要的 Level 2 特性。其中包括带有 \N{...}
的命名字符。 , 字形与 \X
, 完整的属性,如 \p{East_Asian_Width=Full_Width}
,在 ICU 的情况下,还可以通过调整 \b
获得更漂亮的单词默认边界。 .所有这三个 Level-2 正则表达式功能都显着简化了在 Unicode 上使用正则表达式,没有它们,你最多只能做不愉快的事情,最坏的情况是根本无法做到。
Perl 和 ICU4C 虽然有些不同,因为 Perl 支持完全基于字符串的大小写折叠,而 ICU 只支持简单的基于字符的大小写折叠。 Perl 还有很多 ICU 不支持的非 Unicode 正则表达式扩展,例如正则表达式中的环视和命名组,它们都非常有用。
Perl 还允许用户定义/自定义属性和命名字符,这对很多事情都很有用,包括私有(private)使用区域 (PUA) 代码点,因为您现在可以为您喜欢使用的任何 PUA 字符定义自己的名称和属性。 (例如,对于计划包含在 Unicode 中的脚本,例如 unofficial ConScript registry 中的脚本。)
在最近发布的 JDK7 之前,Java 甚至不支持 UTS#18 Level 1,而且只支持最低限度。对于 Java6 或更早版本,各种小东西都是错误的或缺失的。总而言之,JDK 中 Java 的 Unicode 支持很弱:你应该使用 ICU4J 的 UCharacter
etc 类,而不是 OraSun 类,用于任何严肃的 Unicode 工作,否则你会发疯的。真的。
但除了这几个之外,没有什么比这更接近了。 如果你很小心并且不需要做太多事情,你有时可以在 Python 或 Ruby 中蹒跚前行:例如,没有排序或搜索,几乎没有 Unicode 字符属性,甚至没有正确的单词边界等。
尝试在 Javascript 或 PHP 中使用 Unicode 做任何事情的人应该在开始之前退出。这太痛苦了,因为如果不访问字符属性和可能的字素,就无法以任何有用或现实的方式操作 Unicode。
还有跨语言的 Unicode 问题,例如大小写映射和大小写折叠、规范化、换行和整理,所有这些都因语言而异。对于 Unicode 工作,您需要访问大部分(如果不是全部的话)。几乎所有语言都没有完全的属性支持是一个真正的问题,因为字符属性是许多算法所依赖的基础。
我在我的 Unicode Support Shootout 中谈到了大部分内容。讲话。
底线
最重要的是,在撰写本文时,如果您不能使用 ICU 正则表达式或 Perl 本身(但不能使用 PCRE),或者也不能使用 Matthew Barnett 的 regex
Python 中的库,那么你基本上就被 Unicode 正则表达式搞砸了。尽管 Unicode 已有 20 年的历史,但目前没有其他人足够认真地对待正则表达式和/或 Unicode。
这对 Javascript 和 PHP 等“webbish”语言具有严重影响,因为没有可用的替代方案,因此您必须将任何实际工作卸载到不同的服务器端语言,因为 webbish 语言无法以任何合理的方式处理 Unicode时尚。在客户端根本没有任何东西可以工作,这是一个沉重的负担。
另外,请注意,通过 Java 获取 ICU 正则表达式需要滚动您自己的 JNI(或使用来自 Android 的 JNI)来获取 ICU4C:ICU 正则表达式没有 ICU4J 绑定(bind)。
关于regex - 如何检查哪种语言支持 Unicode 正则表达式中的哪个支持级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7125542/
我需要根据需要动态设置文本区域,但它不想正常工作。 JQuery 会自行检查,但无法检查是否已检查。但是当您在第二个单选框内单击时,始终需要文本区域。我尝试了很多次让它工作,但它仍然有问题。我添加了“
我需要在 Django 中进行 API 调用(某种形式),作为我们所需的自定义身份验证系统的一部分。用户名和密码通过 SSL 发送到特定 URL(对这些参数使用 GET),响应应该是 HTTP 200
我将在我的可移植 C 代码中使用 #warning 来生成编译时警告。但并非所有平台都支持 #warning。有什么方法可以找到该平台是否支持 #warning。 #ifdef warning
我编写了一个函数来检查某个数字是否存在于某个区间内。停止搜索的最佳方法是什么?这个: for (i = a; i <= b; i++) { fi = f(i); if (fi == c) {
我想知道在 c 中是否有一种方法可以检查,例如在 for 函数中,如果变量等于或不等于某些字符,而不必每次都重复进行相等性检查。如果我没记错的话,以这种方式检查相等性是不正确的: if (a == (
我有如下日志功能 void log_error(char * file_name, int line_num, int err_code) { printf("%s:%d:%s\n", fil
使用 ssh-keygen 生成的 key 对在 macOS 上可以有不同的格式。 macOS 可读的标准 PEM ASN.1 对象 SecKey API 带有文本标题的 PEM OpenSSH ke
我正在尝试编写一个 excel if 语句。我不熟悉使用 Excel 具有的所有额外功能。我正在使用一个名为 importXML() 的函数.我正在尝试检查我正在使用的函数是否生成“#VALUE!”错
有没有办法检查是否没有 AIO 写入给定文件?我在我的 Unix 类(class)上制作了一个项目,该项目将是一个上下文无关(基于 UDP)的国际象棋服务器,并且所有数据都必须存储在文件中。应用程序将
我有一个如下所示的函数: public Status execute() { Status status = doSomething(); if (status != Stat
我正在使用 Composer,我不希望 PhpStorm 在 vendor 文件夹上运行任何错误检查或检查,因为它对 vendor/中的某些代码显示误报composer/autoload_static
Chapel 的一个很好的特性是它区分了数组的域和它的分布。检查两个数组是否具有相同的域和分布(通常想要的)的最佳方法是什么? 我能看到的最好的方法是检查 D1==D2和 D1.dist==D2.di
在我的 JavaScript 函数中,我为所有输入、文本区域和选择字段提供实际值作为 initial_value: $('input, textarea, select').each(function
我正在编写一个分解为几个简单函数的 PHP 类。在构造函数中,它调用另一个名为 processFile 的函数。该函数调用 5 个私有(private)函数并进行检查。如果检查失败,它会将消息分配给
这个问题已经有答案了: How to detect if user it trying to open a link in a new tab? (2 个回答) 已关闭 7 年前。 我认为 JavaS
我正在浏览我们的代码库并看到很多这样的测试: declare @row_id int = ... declare @row_attribute string select @row_attribu
我正在声明一个用作比较的函数。我的问题是: 为什么条件充当语句? 为什么第 4 行可以工作,而第 5 行却不行? 我知道这段代码不切实际且未使用,但为什么编译器允许这种语法? 谷歌没有找到答案。但话又
到目前为止,我有一个带有空文本字段的 PHP Kontaktform,并使用以下命令检查了所需的字段: $name = check_input($_POST['name'], "请输入姓名。"); 现
目前,我能想到的合理检查的唯一方法没有臃肿的逻辑: if ( $value > 0 ) { // Okay } else { // Not Okay } 有没有更好的办法? 最佳答案
我正在尝试运行一个脚本,如果 i 存在(意味着存在 i 值,任何值)或其他部分,我希望运行其中的一部分如果i没有值就运行,有人可以启发我吗? 我说的是 for 循环,比如 for (var i=0;
我是一名优秀的程序员,十分优秀!