我写了一个应该提取以下模式的正则表达式;
这是我正在尝试的正则表达式;
"\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从搜索到的推文中获取特定模式。
谢谢,
答案 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
进一步阅读: