Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单词边界的Postgresql正则表达式不工作_Postgresql_Unicode_Utf 8 - Fatal编程技术网

单词边界的Postgresql正则表达式不工作

单词边界的Postgresql正则表达式不工作,postgresql,unicode,utf-8,Postgresql,Unicode,Utf 8,使用v9.6.2没有尝试其他版本 第一个有效。第二个带汉字的失败了。有什么好处 dev=> select 'foo bar' ~ '\ybar\y' v; v --- t (1 row) dev=> select '積極的 積極的' ~ '\y積極的\y' v; v --- f (1 row) 它将在不包含以下内容的情况下工作\y: regexp_匹配也可以工作: SELECT regexp_matches('積極的 積極的', '^.*(積極的).*$') AS v;

使用v9.6.2没有尝试其他版本

第一个有效。第二个带汉字的失败了。有什么好处

dev=> select 'foo bar' ~ '\ybar\y' v;
 v
---
 t
(1 row)

dev=> select '積極的 積極的' ~ '\y積極的\y' v;
 v
---
 f
(1 row)

它将在不包含以下内容的情况下工作\y:

regexp_匹配也可以工作:

SELECT regexp_matches('積極的 積極的', '^.*(積極的).*$') AS v;
    v     
----------
 {積極的}
(1 row)
[更新]

现代汉字是使用Unicode来呈现的,对于正则表达式来说,并非所有编程平台都完全支持Unicode。我想PostgreSQL没有使用支持Unicode单词边界的正则表达式引擎

有些编程语言(如Scala Java)也支持带单词边界的Unicode:

scala> """\b積極的\b""".r findFirstIn "積極的 積極的"
res4: Option[String] = Some(積極的)

请注意,在Scala/Java中,单词边界使用的是\b而不是\y。

Javascript,但我很确定问题是相同的:单词被定义为一个单词字符序列,既不在单词字符之前,也不在单词字符之后。单词字符是由ctype或下划线定义的alnum字符。-校对zh_cnhmm,我不注意单词边界的缺点是重点。更新了我的答案。谢谢,是的,可能博士后不支持。感谢你的努力。
scala> """\b積極的\b""".r findFirstIn "積極的 積極的"
res4: Option[String] = Some(積極的)