gpt4 book ai didi

Java - 作为 [a-zA-z0-9]* 传递的未知字符?

转载 作者:行者123 更新时间:2023-11-29 09:37:12 25 4
gpt4 key购买 nike

我不是正则表达式方面的专家,但我需要解析一些我无法控制的输入,并确保我过滤掉任何没有 A-z 和/或 0-9 的字符串。

当我运行它时,

Pattern p = Pattern.compile("^[a-zA-Z0-9]*$"); //fixed typo
if(!p.matcher(gottenData).matches())
System.out.println(someData); //someData contains gottenData

某些空格 + 未知符号以某种方式从过滤器中溜走(gottenData 是红色矩形): screenshot

如果您想知道,它确实也显示文本,但不完全是这样。

目前,我不介意 [?],只要它还包含一些字符串即可。

请帮忙。

[编辑] 据我从(非常大的)输入中可以看出,[?] 要么是空格,要么什么都没有;可能存在某种编码问题,也可能与#text 节点有关(输入是 xml)

最佳答案

* 量词匹配“零个或多个”,这意味着它将匹配一个不包含您的类中任何字符的字符串。试试 + 量词,它表示“一个或多个”:^[a-zA-Z0-9]+$ 将匹配仅由字母数字字符组成的字符串。 ^.*[a-zA-Z0-9]+.*$ 将匹配任何包含一个或多个字母数字字符的字符串,尽管前导 .* 会使它慢得多。如果您使用 Matcher.lookingAt() 而不是 Matcher.matches,它不需要完整的字符串匹配,您可以使用正则表达式 [a-zA- Z0-9]+.

关于Java - 作为 [a-zA-z0-9]* 传递的未知字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4681289/

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