gpt4 book ai didi

regex - libc regcomp 和 regexec 中的多字节字符

转载 作者:行者123 更新时间:2023-12-04 12:53:44 24 4
gpt4 key购买 nike

有没有办法拿到libc6的正则表达式函数 regcompregexec使用多字节字符正常工作?

例如,如果我的模式是 utf8 字符 猫机+猫 , 在 utf8 编码字符串上找到匹配项 猫机机机猫会失败,它应该成功的地方。

我认为这是因为字符的字节表示为 \xe6\x9c\xba ,以及 +匹配一个或多个字节 \xba .我可以通过在模式中的每个多字节字符周围加上括号来使这个实例工作,但由于这是针对应用程序的,我不能要求用户这样做。

有没有办法将要匹配的模式或字符串标记为包含 utf8 字符?或许告诉libc将模式存储为 wchar 而不是 char?

最佳答案

您可以使用正则表达式来构建您的正则表达式吗?这是一个 javascript 示例,(尽管我知道您没有使用 js):

function Examp () {
var uString = "猫机+猫+猫ymg+sah猫";
var plussed = uString.replace(/(.)(?=[\+\*])/ig,"($1)");
console.log("Starting with string: " + uString + "\r\n" + "Result: " + plussed);
uString = "猫机+猫*猫ymg+s\\a+I+h猫";
plussed = uString.replace(/(\\?.)(?=[\+\*])/ig,"($1)");
console.log("You can even take this a step further and account for a character being escaped, if that's a consideration.")
console.log("Starting with string: " + uString + "\r\n" + "Result: " + plussed);
}
<input type="button" value="Run" onclick="Examp()" />

关于regex - libc regcomp 和 regexec 中的多字节字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28115794/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com