gpt4 book ai didi

java - 你如何使用正则表达式按 unicode 字符拆分字符串?

转载 作者:行者123 更新时间:2023-11-29 08:12:50 26 4
gpt4 key购买 nike

我在使用正则表达式方面需要帮助。我读过 Java Regex笔记,但找不到解决我的问题的方法。

问题:我有一个字符串,需要在所有出现的 unicode 字符\0、\1 和\2 处拆分。

尝试:

String msg ="foo\0foo\0bar\2foo\1horse"
msg.split("[\1\0\2]");

上面的代码很完美(不确定是不是正则表达式的正确使用),但是

String msg ="foo\0foo\0bar\2foo\1horse\1123123\0123123\21"
msg.split("[\1\0\2]");

不能正常工作,因为看起来正则表达式正在拾取\1k(k 为任何整数)而不仅仅是\0 和\1 和\2。

有什么想法吗?

已解决:我发现测试中的问题是我使用了自己生成的字符串。在数值前使用\1 使得 String 自动包含\1k 作为字符而不是\1。从我的来源读取时,它以字节为单位,因此具有正确的\1 编码。在解码和重新编码(手动)时,我犯了错误。使用原始数据解决了这个问题。

或者,我使用 unicode\u0001-\u0002 重新编码,效果也不错。感谢所有的答案。学习了一些有关 Regex 和 unicode 的知识。

最佳答案

尝试使用 Unicode 字 rune 字形式 (\uXXXX):

String msg ="foo\u0000bar\u0001gah\u0002zip\u0001horse\u0001123123\u0000456456\u00021";
String ss[] = msg.split("[\u0000-\u0002]");
// ss = ["foo", "bar", "gah", "zip", "horse", "123123", "456456", "1"];

关于java - 你如何使用正则表达式按 unicode 字符拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6988027/

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