问题标签 [character-properties]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 匹配Java正则表达式中的Unicode破折号?
我正在尝试制作一个 Java 正则表达式,以使用 Pattern.split() 将通用格式“foo - bar”的字符串拆分为“foo”和“bar”。“-”字符可能是几个破折号之一:ASCII '-'、em-dash、en-dash 等。我构造了以下正则表达式:
如果我正确阅读了 Pattern 文档,当两边都被空格包围时,它应该捕获任何 unicode 破折号或 ascii 破折号。我使用的模式如下:
没有喜悦。对于下面的示例输入,没有检测到破折号,并且 titleSegmentSeparator.matcher(sectionTitle).find() 返回 false!
为了确保没有遗漏任何不寻常的字符实体,我使用 System.out 打印了一些调试信息。输出如下——每个字符后面跟着 (int)char 的输出,应该是它的 unicode 代码点,不是吗?
样本输入:
学习总结(10 篇中的 1 篇)– 竞赛
S(83)t(116)u(117)d(100)y(121) (32)S(83)u(117)m(109)m(109)a(97)r(114)y(121 ) (32)((40)1(49) (32)o(111)f(102) (32)1(49)0(48))(41) (32)–(8211) (32)C( 67)o(111)m(109)p(112)e(101)t(116)i(105)t(116)i(105)o(111)n(110)
在我看来,破折号是代码点 8211,它应该与正则表达式匹配,但事实并非如此!这里发生了什么?
regex - 正则表达式匹配所有 unicode 引号
是否有一个简单的正则表达式来匹配所有 unicode 引号?还是必须像这样手动编码:
感谢您的阅读。
布赖恩
regex - Unicode 正则表达式 - 在 343 个字符处失败
我正在使用下面的正则表达式来清除任何非拉丁字符。结果,我发现如果我使用大于 342 个字符的字符串,函数就会失败,一切都会中止,并且网站连接会被重置。
我把它缩小到 \p{P} unicode 字符属性,它匹配任何标点符号。
有谁知道/看到问题出在哪里?
preg_match('/^([\p{P}\p{S}&\p{Latin}0-9]|\s)*$/u', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
java - 替换 Unicode 控制字符
我需要替换 Java 中字符串中的所有特殊控制字符。
我想问谷歌地图API v3,谷歌似乎不喜欢这些字符。
示例:http ://www.google.com/maps/api/geocode/json?sensor=false&address=NEW%20YORK%C2%8F
此 URL 包含此字符:http ://www.fileformat.info/info/unicode/char/008f/index.htm
所以我收到了一些数据,我需要对这些数据进行地理编码。我知道某些字符不会通过地理编码,但我不知道确切的列表。
我找不到有关此问题的任何文档,因此我认为 Google 不喜欢的字符列表是: http ://www.fileformat.info/info/unicode/category/Cc/list.htm
是否有任何已经构建的功能来摆脱这些字符,或者我必须构建一个新的,并一个一个替换?
还是有一个好的正则表达式来完成这项工作?
有人知道 Google 不喜欢哪些确切的字符列表吗?
编辑:谷歌为此创建了一个网页:
https://developers.google.com/maps/documentation/webservices/?hl=fr#BuildingURLs
python - 带有 unicode 字符的 Python 正则表达式错误?
长话短说:
为什么它与正则表达式中的 unicode 字符不匹配^
字符串$
?据我了解^
,代表字符串(行)的开头和$
- 代表它的结尾。
unicode - 如何知道 Unicode 字符的首选显示宽度(以列为单位)?
在 Unicode 的不同编码中,例如UTF-16le或UTF-8,一个字符可能占用 2 或 3 个字节。许多 Unicode 应用程序不关心 Unicode 字符的显示宽度,就像它们都是拉丁字母一样。例如,在80列的文本中,一行应该包含40 个汉字或80 个拉丁字母,但大多数应用程序(如 Eclipse、Notepad++ 和所有知名的文本编辑器,如果有什么好的例外我敢说)只是计算每个汉字为 1 宽度为拉丁字母。这肯定会使结果格式丑陋且不对齐。
例如,tab-width 为 8 将得到以下丑陋的结果(将所有 Unicode 计为 1 显示宽度):
但是,预期的格式是(将每个汉字计算为 2 个宽度):
对字符显示宽度的不当计算使这些编辑器在进行制表符对齐、换行和段落重新格式化时完全无用。
虽然不同字体之间的字符宽度可能会有所不同,但在所有固定大小终端字体的情况下,汉字始终是双倍宽度。也就是说,不管字体如何,每个汉字最好以2宽显示。
一种解决方案是,我可以通过将编码转换为GB2312来获得正确的宽度,在GB2312编码中,每个汉字需要 2 个字节。但是,GB2312 字符集(或GBK字符集)中不存在某些 Unicode 字符。而且,一般来说,从编码大小(以字节为单位)计算显示宽度并不是一个好主意。
简单地将 Unicode 中 ( \u0080
.. \uFFFF
) 范围内的所有字符计算为 2 宽度也是不正确的,因为该范围内还有许多 1 宽度字符。
计算阿拉伯字母和韩文字母的显示宽度也很困难,因为它们是由任意数量的 Unicode 代码点构成一个单词/字符。
因此,Unicode 代码点的显示宽度可能不是整数,我认为没关系,它们在实践中可以基于整数,至少总比没有好。
那么,在 Unicode 标准中是否有任何与 char 的首选显示宽度相关的属性?或者任何Java库函数来计算显示宽度?
java - Java Unicode 正则表达式
我有一些这样的文字。
我想用正则表达式替换 ue280, ue340 到 \ue280, \ue340
有什么解决办法
提前致谢
regex - 如何创建一个匹配除空格以外的非字母数字字符的 Perl 正则表达式?
我有一个/\W/i
匹配所有非字母数字字符的 Perl 正则表达式,但它也匹配我想忽略的空格。如何让它匹配除空格以外的非字母数字字符?
php - 在 PHP 5.2 中修剪 unicode 空格
如何修剪 a string(6) " page"
,其中第一个空格是 0xc2a0 不间断空格?
我试过trim()
和preg_match('/^\s*(.*)\s*$/u', $key, $m);
。
另一个问题:我怎样才能可靠地复制这些字符?它们似乎被转换为“正常”空间,这使得调试变得困难。
c# - 正则表达式和数据库读/写中的 Unicode
晚安,
我目前正在基于正则表达式匹配在 C# 中为人类语言开发一个非常简单的词法分析器,我目前面临指定一个正则表达式的问题,该正则表达式可以匹配目标语言中每个可能的标点符号,另一个也可以匹配各种空格。在 Stack Overflow 和另一个站点中搜索后,我发现我可以分别使用正则表达式\p{P}
作为标点符号和\p{Z}
对于空格,它在从文本文件中读取时起作用。问题是在最终程序中,需要从 SQL 数据库中读取记录并使用这个词法分析器处理它们,我不知道数据库中记录的编码是什么。在这种情况下这可能是一个问题吗?提到的正则表达式是否可以匹配输入的每个标点符号和空格字符,无论它们的编码是什么?
非常感谢你。