正则表达式无法正常使用土耳其语字符

时间:2013-05-16 04:39:46

标签: php regex nlp character turkish

我写了一个应该提取以下模式的正则表达式;

  • “çççoookkkgggüüüzzzeeelll”(这意味着vvveeerrryyy gggoooddd带有土耳其字符“ç”和“ü”)
  • “ccccoookkk ggguuuzzzeeelll”(意思相同但英文字符为“c”和“u”)

这是我正在尝试的正则表达式;

  • "\b[çc]+o+k+\sg+[üu]+z+e+l+\b":这适用于英语但不适合土耳其语
  • "çok":找到“çok”,但当我尝试"ç+o+k+"不适用于“çççoookkk”时,会发现“çoookkk”
  • "güzel":找到“güzel”但是当我尝试"g+ü+z+e+l+"时,“gggüüüzzzeeelll”不适用
  • "\b(c+o+k+)|(ç+o+k+)\s(g+u+z+e+l)|(g+ü+z+e+l+)\b":无法正常工作
  • "[çc]ok\sg[uü]zel":我也试过这个以获得“çokgüzel”模式但不起作用。

我的问题可能是使用土耳其字符的正则表达式运算符。我不知道怎么解决这个问题。

我正在使用http://www.myregextester.com检查我的正则表达式是否正确。

我正在使用Php编程语言通过Twitter Rest Api从搜索到的推文中获取特定模式。

谢谢,

1 个答案:

答案 0 :(得分:4)

您尚未指定所使用的编程语言,但在其中许多编程语言中,\b字符类只能用于纯ASCII编码。

在内部,\b被处理为\w\W套之间的边界。
反过来,\w等于[a-zA-Z0-9_]

如果你没有使用任何花哨的空格标记(你不应该),那么考虑使用常规的空格char类(\s)。

请参阅this table(向下滚动到 Word边界部分),检查您的语言是否支持\b的Unicode。如果它说,“ascii”,则它不会。

作为旁注,根据您的编程语言,您可以考虑使用直接Unicode代码点而不是国家字符。

Se还:utf-8 word boundary regex in javascript

进一步阅读: