相关疑难解决方法(0)

如何在使用unicode字符属性时模拟单词边界?

从我之前的问题为什么在locale-pragma字符下不匹配?以及如何更改嵌套引号我了解到,在处理UTF-8数据时,您不能信任\wword-char,必须使用Unicode字符属性\p{Word}.现在,我发现零宽度字边界\b也不适用于UTF-8(启用了区域设置),但我没有在Unicode字符属性中找到任何等效字符.我以为我可以自己构建它:(?<=\P{Word})(\p{Word}+)(?=\P{Word})它应该等同于\b(\w+)\b.

在下面的测试脚本中,我有两个数组来测试两个不同的正则表达式.\b当未启用语言环境时,第一个基于工作正常.为了使它也能与locales一起工作,我编写了另一个带有模拟边界的版本,(?=\P{Word})但是它没有按照我的预期工作(我也在脚本中显示了预期的结果).

你是否看到了什么错误以及如何使用ASCII(或没有语言环境)来模拟正则表达式的工作?

#!/usr/bin/perl

use 5.010;
use utf8::all;
use locale; # et_EE.UTF-8 in my case
$| = 1;

my @test_boundary = (  # EXPECTED RESULT:
  '"abc def"',         # '«abc def»'
  '"abc "d e f" ghi"', # '«abc «d e f» ghi»'
  '"abc "d e f""',     # '«abc «d e f»»'
  '"abc "d e f"',      # '«abc "d e f»'
  '"abc "d" "e" …
Run Code Online (Sandbox Code Playgroud)

regex unicode perl locale utf-8

8
推荐指数
2
解决办法
1651
查看次数

使用语言环境在Windows上的Perl中进行多语言文本排序

我正在构建一个用于对不同语言的书籍索引进行排序的软件.它使用Perl,并关闭语言环境.我在Unix上开发它,但它需要可移植到Windows.如果这在原则上是有效的,还是依靠现场工作,我是否会咆哮错误的树?总而言之,Windows实际上是我需要它工作的地方,但我更适合在UNIX环境中开发.

unicode perl multilingual locale collation

4
推荐指数
1
解决办法
995
查看次数

标签 统计

locale ×2

perl ×2

unicode ×2

collation ×1

multilingual ×1

regex ×1

utf-8 ×1